FilePathPattern 0.1.5

FilePathPattern 0.1.5

Julian Goacher维护。



  • Julian Goacher

FilePathPattern for iOS

基于正则表达式的iOS文件路径模式匹配器。

用途

FilePathPattern是一个匹配文件路径与模式的工具,并将匹配的部分提取到命名变量中。例如,模式**/{name}.txt可以用于匹配任何具有.txt扩展名的文件,并将文件名提取到名为name的变量中;此模式将匹配以下任何文件路径

    Desktop/notes.txt
    /var/log/error.txt
    /usr/share/vim/vim80/syntax/README.txt

安装

要使用CocoaPods进行安装,请将以下内容添加到Podfile中:pod 'FilePathPattern', '~> 0.1.2'

示例用法

导入头文件

    #import "IFFilePathPattern.h"

测试路径字符串是否与模式匹配,并提取匹配变量

    NSDictionary *matches = [IFFilePathPattern matchPath:@"images/fruit/orange.jpg"
                                            usingPattern:@"images/{type}/{name}.(jpg|png)"];
    if (matches) {
        NSString *type = matches[@"type"]; // => 'fruit'
        NSString *name = matches[@"name"]; // => 'orange'
    }

模式语法

模式的语法是标准正则表达式语法和熟悉的文件通配符语法的结合。与标准正则表达式语法的具体区别如下:

  • 句点(圆点).被视为一个实际的.字符,而不是字符通配符。
  • 单个星号*被视为任何非反斜杠(/)字符,而不是零个或多个量词。这使得匹配单个路径组件(例如*/*)变得容易。
  • 双星号**被视为任何字符,用于匹配深度嵌套路径很有用(例如**/file)。
  • 括号可以用来定义表达式组(例如(a|b)),但它们不是捕获的。
  • ?+量词,以及交替(管道符号|),与正常正则表达式中的用法一样(注意,这意味着?与正常文件通配符中的用法不同)。
  • 使用[]或标准缩写如\w\s的所有字符类都与正常正则表达式中的用法一样。
  • 可以使用变量模式来捕获匹配路径中的数据。变量模式是花括号内的变量名,例如{name}。变量模式默认与*模式匹配,但可以通过在变量名末尾添加冒号后跟替代模式来修改此行为,例如{name:aaa|bbb}
  • 类似a{2,5}的量词可以工作,但不能用于变量模式中。

示例模式

  • 从所有匹配的HTML文件中提取文件名:**/{name}.html
  • 从匹配的docx文件中提取一个带有可选日期前缀的标题:docs/({id}-)?{title}.docx。这将匹配类似docs/123-Guides.docxdocs/Price List.docx的文件。
  • 匹配按日期存储的文本文件并提取日期字段:logs/{year:\d+}-{month:\d+}-{day:\d+}.txt。这将匹配类似logs/2016-03-17.txt的文件。

限制

  • 当与量词一起使用时,变量模式可能会产生意外的结果(或者根本无法工作),例如{name}*(({name}){1,2}}
  • 无法保证模式能编译成一个有效的正则表达式;基本模式应该没问题,但复杂的模式可能会抛出异常。特别是,在变量模式内包含变量量词(如{var:(abc){2,3}})很可能不起作用。

许可证

FilePathPattern在Apache 2.0 OSS许可证下发布。