正则表达式参考 |
正则表达式是一个定义搜索和匹配模式的功能强大的方法。 Beyond Compare允许用户使用正则表达式用于搜索文本,以及指定分类文本的规则。 Beyond Compare支持的正则表达式是Perl兼容的正则表达式子集。 正则表达式本身可以是一个复杂的话题,这里有几个非常好的资源供参考。 推荐书目Mastering Regular Expressions。 另一个很好的资源是Steve Mansour所著的A Tao of Regular Expressions,可以在以下网页被找到: www.scootersoftware.com/RegEx.html 一个正则表达式由两种类型的字符所组成: 普通字符和元字符。 当执行匹配比较时,元字符代表特殊的含义,控制匹配如何产生并用作通配符。 普通字符通常和它们自身匹配。 如果要匹配一个元字符,将其escape,并在前面放置反斜杠“\”。 有几种不同类型的元字符,详细如下。 元字符 - Escape Sequences
元字符 - 预定义类 预定义字符类匹配任何字符的子集。 下面的类已经为用户定义好。
用户可以通过用方括号“[]”包括一组字符从而构造自己的字符类。 预先确定的类(除了“.”)可被用于括号中,且夹在两个字符中间的“-”表示范围。 故而[a-z]表示所有小写字母,[a-zA-Z]表示所有小写和大写字母。 如果希望把“-”包括到类中,应该放到字符串的开头或末尾。 如果第一个在括号里的字符是一个脱字号“^”,则这个类代表除了指定字符的所有字符。 例如, [^a-z]表示除了小写字母之外的所有字符。 元字符 - 替代符号 将“|”置于两组项之间从而实现替代匹配。 a|b会匹配a或者b。 ab|cd会匹配“ab”或“cd”,但不匹配“ac”。 "|"将被模式分隔符(如"("、"["或者模式的起始)包围的字符隔开分组。 替代可以被放置在括号“()”中使得匹配对象变得明显,如a(bc|de)f。 替代首先匹配左侧,即使针对字符串“beyond”,正则表达式。 bey|beyond仍会匹配bey。 元字符 - 位置符号 下面的元字符控制行的什么位置发生匹配。 注意: \A和\Z匹配文本的起始和结束,但如果Beyond Compare完成逐行搜索,其作用和^以及$相同。
元字符 - 迭代 迭代字符可以跟随正则表达式中的任何部分,引用其之前的项。 有两类迭代 - 贪婪和非贪婪。 贪婪迭代做尽可能多的匹配,非贪婪迭代做尽可能少的匹配。 贪婪:
非贪婪:
元字符 - 子表达式 括号"()"可被用于给字符分组,向后引用(如下讨论)。 (bey){4,5}匹配四到五个“bey”的实例。 (abc|[0-9])*匹配任何“abc”的组合以及数字0到9。 例如“abc5”、“679abc”和“abc77abc”。 元字符 - 向后引用 任何匹配“()”的字符串序列都会被保存为子表达式,随后可以用\1到\9去自左向右引用。 b(.)\1可以匹配“been”和“boon”,但不能匹配 "bean"、"ben"或"beeen"。 修改符 修改符允许匹配行为的变化。 如果修改符被子表达式包含,则只影响子表达式。 使用(?i)和(?-i)去控制匹配的大小写敏感。 示例:
参考 |