NSPredicatey与正则表达式
使用NSPredicate以及正则表达式判断字符串:
1.NSPredicate 谓词
NSPredicate是Cocoa框架中用于查询、过滤的类,常用方法为:
NSPredicate *predicate = [NSPredicate predicateWithFormat:(NSString*), …];
Format 常用查询代码:
1.比较运算符: >, <, ==, >=, <=, !=
用于数值及字符串的比较
@"SELF > 100"
2.范围运算符: IN, BETWEEN(需要添加数组)
@"SELF IN {1,12}"
@"SELF BETWEEN[cd] {'beijing','shanghai'}"
3.字符串本身: SELF
4.字符串查询: BEGINSWITCH, ENDSWITCH, CONTAIN
@"SELF BEGINSWITCH[cd] 'er'"
5.通配符: LIKE
@"SELF LIKE[cd] '???er*'"
6.正则表达式: MATCHES
@"SELF MATCHES '^[0-9]{3}$'"
* 通配符(任意长度)
? 通配符(单个)
[c] 不区分大小写
[d] 不区分重音符号
[cd] 均不区分
常用正则表达式:
元字符:
\ 转义字符
^ 字符串起始位置
$ 字符串结束位置
[\u4e00-\u9fa5] 匹配汉字
[a-zA-Z0-9] 匹配字母数字(范围)
{n} 匹配n次
{n,} 至少匹配n次
{n,m} 匹配次数范围为n~m次
+ 等价于 {1,}
* 等价于 {0,}
? 等价于 {0,1}
. 匹配单个任意可显示字符
, 分割,匹配包含或
| 匹配二者其一(或)
[] 字符集合
[^] 复制字符集合,不包含
<> 匹配单个单词
() 匹配组,可使用\n进行引用
环视(Lookaround):限定表达式
(?:) 非获取匹配 包含,直接匹配
(?=) 非获取匹配 正向肯定预查
(?!) 非获取匹配 正向否定预查
(?<=) 非获取匹配 逆向肯定预查
(?<!) 非获取匹配 逆向否定预查
转义字符:
\. 点号(.)
\\ 反斜杠
\( \) 小括号
\[ \] 中括号
\{ \} 大括号
\b 位置匹配,单词边界
\B 位置匹配,非单词边界
\d 等价于[0-9],数字匹配
\D 等价于[^0-9],非数字
\w 匹配包括_的单词字符,Unicode字符集(不包括符号)
\W 匹配非单词字符,等价于[^a-zA-Z0-9_]
\x0a 匹配16进制转义值,后接两位16进制数,可使用ASCII码
\uffff 匹配Unicode字符,后接4位16进制数
\n ①n为正整数,对所获取匹配的一次引用;
②n为1~3位的八进制数,匹配八进制转移值
如果\n之前有n个匹配组,则为一次引用,若没有且n为1~3位八进制数,则为八进制转义值
不可见字符:
\cX 匹配控制字符,后接A-Z或a-z
\f 换页符,等价于\x0c, \cL
\n 换行符,等价于\x0a, \cJ
\r 回车符,等价于\x0d, \cM
\t 制表符,等价于\x09, \cI
\v 垂直制表符,等价于\x0b, \cK
\s 等价于[ \f\n\r\t\v],匹配任意不可见字符(含全角半角空格)
\S 等价于[^ \f\n\r\t\v],匹配任意可见字符(含全角半角空格)