有些人在碰到问题时,就想:“我知道,我可以使用正则表达式。”现在,他们就有了两个问题。 ————jamie“jwz”Zawinski
正则表达式的强大之处在于引入特殊字符来定义字符集、匹配子组和重复模式。
1、符号
1 foo #literal 匹配文本字符串的字面值literal 2 foo|bar #re1|re2 匹配正则表达式re1或者re2 3 b.b #. 匹配任何字符 (除了 之外) 4 ^Dear #^匹配字符串起始部分 5 /bin/*sh$ # 匹配字符串终止部分 6 [A-Za-z0-9]* #*匹配0次或是多次前面出现的正则表达式 7 [a-z]+.com #+ 匹配1次或是多次前面出现的正则表达式 8 goo? #? 匹配0次或是1次前面出现的正则表达式 9 [0-9]{3} #{N} 匹配N次前面出现的正则表达式 10 [0-9]{5,9} #{M,N} 匹配M~N次前面出现的正则表达式 11 [aeiou] #[...] 匹配来自字符集的任意单一字符 12 [0-9],[A-Za-z] #[..X-Y..]匹配X~Y范围中的任意单一字符 13 [^aeiou] #[^...] 不匹配刺激腹肌中出现的任意一个字符,包括某一范围的字符(如果在此字符集中出现) 14 .?[a-z] #(*|+|?|{})? 用于匹配上面批发呢出现/重复出现符号的非贪婪版本(*、+、?、{}) 15 ([0-9]{3})?,f(oo|u)bar #(...) 匹配封闭的正则表达式,然后另存为子组
2、特殊字符
1 datad+.txt #d 匹配任何十进制数字,与[0-9]一致(D与d相反,不匹配任何非数值型的数字) 2 [A-Za-z]w+ #w 匹配任何字母数字字符,与[A-Za-z0-9_]相同(W与之相反) 3 ofsthe #s 匹配任何空格字符,与[ vf]相同(S与之相反) 4 The #匹配任何单词边界(B与之相反) 5 price:16 #N 匹配已保存的子组 6 .,\,* #c 逐字匹配任何特殊字符c 7 ADear #A() 匹配字符串的起始(结束)