正则表达式,很强大.捡起来,提高工作效率.
限定符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。有 * 或 + 或 ? 或 {n} 或 {n,} 或 {n,m} 共6种。
定位符用来描述字符串或单词的边界,^ 和 $ 分别指字符串的开始与结束,\b 描述单词的前或后边界,\B 表示非单词边界。
具体的,参见 正则表达式语法
被检索的文本:(仅两行==两个换行符)
abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz zyxwvutsrqponmlkjihgfedcba 19-09-30 19:37:30 [376.2][PLC][Send ][239] 68 EF 00 43 04 00 00 00 00 DC 00 00 95 31 71 37 6D 7B 34 47 BB 8A F1 01 00 02 00 D0 00 68 6D 7B 34 47 BB 8A 68 11 04 34 33 39 38 65 16 68 6D 7B 34 47 BB 8A 68 11 04 34 34 39 38 66 16 68 6D 7B 34 47 BB 8A 68 11 04 34 35 39 38 67 16 68 6D 7B 34 47 BB 8A 68 11 04 34 36 39 38 68 16 68 6D 7B 34 47 BB 8A 68 11 04 34 37 39 38 69 16 68 6D 7B 34 47 BB 8A 68 11 04 34 38 39 38 6A 16 68 6D 7B 34 47 BB 8A 68 11 04 34 39 39 38 6B 16 68 6D 7B 34 47 BB 8A 68 11 04 34 3A 39 38 6C 16 68 6D 7B 34 47 BB 8A 68 11 04 34 3B 39 38 6D 16 68 6D 7B 34 47 BB 8A 68 11 04 34 3C 39 38 6E 16 68 6D 7B 34 47 BB 8A 68 11 04 34 3D 39 38 6F 16 68 6D 7B 34 47 BB 8A 68 11 04 33 32 34 33 59 16 68 6D 7B 34 47 BB 8A 68 11 04 33 32 35 33 5A 16 9D 16搜索"mn"开头,"xyz"结尾的可能.
mn.*?cba结果: 共1处匹配.如下图.
.*? 组合解释 1、. 匹配任意除换行符“\n”外的字符; 2、*表示匹配前一个字符0次或无限次; 3、+或后跟?表示非贪婪匹配,即尽可能少的匹配,如?重复任意次,但尽可能少重复; 4、 .*? 表示匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复。 如:a.*?b匹配最短的,以a开始,以b结束的字符串。如果把它应用于aabab的话,它会匹配aab和ab。
问题:如下三个正则表达式有何不同?
mn.*?cba$ ^mn.*?cba ^mn.*?cba$结论: 即正则表达式特殊字符^与$的含义. 分别对应,匹配输入字符串的开始位置与结束位置,详见本章节的第一部分(语法).
mn.*?cba$ cba必须是输入字符串的结尾字符串,位于中间部分也是无效的.
^mn.*?cba mn必须是输入字符串的开始字符串,位于中间部分也是无效的.
^mn.*?cba$ mn必须是输入字符串的开始字符串,位于中间部分也是无效的. 同时,cba必须是输入字符串的结尾字符串,位于中间部分也是无效的.
检索的输入的字符串,是以换行符为单位的.
结果如下图,一处匹配.
未找到符合条件的字符串.
结果依旧如上图,无匹配.
需要检索如下图标记的关键字. '[‘与’]'属于特殊字符,对于notepad工具.
dwAlmFlag2:\d{8}\[MPNo=33\]参见: 最全的常用正则表达式大全