正则匹配
发布时间:2020-12-13 19:39:01 所属栏目:百科 来源:网络整理
导读:正则匹配模式 匹配模式指得是正则表达式引擎将以何种模式匹配字符串。 模式名称 启用,禁用 缺省启用 说明 UNIX_LINES (?d)启用,(?-d)禁用 是 启用Unix行模式。 在此模式下,只有 'n' 被认为是行结束符。它会影响 . , ^ ,和 $ 的行为。 CASE_INSENSITIVE (
正则匹配模式
匹配模式指得是正则表达式引擎将以何种模式匹配字符串。 字符子集 字符子集可以含有别的字符子集,并且可以通过联合操作符(缺省)和交集操作符(&&)实现组合。联合操作符表示某个子集匹配它的子子集所匹配的任意字符。交集操作符表明某个字符子集只匹配它的子子集都匹配的字符。 字符子集所能够有的操作符的优先级如下,从高到低: 成组符 [...] 区间符 a-z 联合符 [a-e][i-u] 交集符 [a-z&&[aeiou]]
注意:在字符子集[]内部的语法根本不同于正则表达式其它部分中的语法。例如,在字符子集内部,正则表达式 . 失去了它原有的含义,而是成了一个匹配.的元字符。
一个换行符('n')。行结束符 行结束符是一个或两个字符序列,用以表明输入字符序列中一行的结束。下面的字符被认为是行结束符: 一个回车符加上一个换行符("rn")。 一个单独的回车符('r')。 代表下一行的字符('u0085')。 行分隔符('u2028'),Unicode中被定义。 一个分段符('u2029),Unicode中被定义。
如果 UNIX_LINES 模式被启用,则只有换行符被认为是行结束符。
((A)(B(C)))如果 MULTILINE 模式被启用,。 分组和引用 字符分组以它们的左括号的出现顺序来排序。例如在表达式((A)(B(C))),有四个分组: (A) (B(C)) (C)
第0组永远表示表达式本身。
分组采用这样的命名方式,是因为,在一次匹配过程中,正则表达式会被匹配多次。以前的匹配子序列有可能在将来被使用;或者在匹配结束时,程序有可能需要重新获得所有匹配的子字符序列。 对于正则表达式中的某个分组而言,永远只保留最后匹配的字符序列。如果对某个分组匹配尝试失败,则会保留上次匹配成功的字符序列。例如,对于正则表达式(a(b)?)+而言,字符序列"aba",将会让分组2匹配的字符序列为"b"。 以(?开始的分组,将不会计入分组数目,也不会被后续匹配所引用。 Unicode支持 本正则表达式匹配引擎的实现遵循了《Unicode技术报告:Unicode正则表达式指南》,实现了该指南的第二层所需的功能,但是在细微处有一些简单语法修改。 Unicode块(Block)和分类(Category)通过p和P通配苻表示。p{prop}匹配含有的输入序列,而P{}匹配不含有的输入序列。Unicode块通过前缀In表示,如p{InMongolian}。Unicode分类通过可选的前缀Is表示,因此p{L}和p{IsL}都代表Unicode分类 letters。Unicode块和分类都可以在正则表达式子集外部和内部使用。 目前支持的Unicode块和分类是《Unicode标准,第三版》中所指定的块和分类。 Unicode块名称在《Unicode 字符数据库》的第14章被定义,文件名称叫Blocks-3.txt,但是名称中的空格被去掉了。例如"Basic Latin"成了"BasicLatin"。无论是标准化的还是非标准化的分类,都在该标准的第88页的第4-5表中被全部定义。 与Perl 5正则表达式语法对比 [TBD] 正则表达式参考 字符 |