正则表达式_总结

正则表达式必知必会

1.通配符"."可以匹配任意一个单个字符。 *实践"."不匹配"\r\n"换行。
2.转义字符"\"可以转义特殊字符。
3.字符集合"[abc]",可以匹配任意一个出现在字符集合里的字符。
4.字符区间"-",[012345]可以写成[0-5],[abcde]可以写成[a-e]。[0-9A-Fa-f]匹配16进制数字。
5.取非匹配"^",[^0-9]匹配非数字,作用于字符集的所有字符区间。
6.匹配空白字符:[\b]退格字符;\f换页符;\n换行符;\r回车符;\t制表符;\v垂直制表符。
7.字符集合的简写形式:
[0-9]简写为\d;[^0-9]简写为\D;
[0-9A-Za-z_]简写为\w;[^0-9A-Za-z_]简写为\W; *实践\w匹配汉字
[\f\n\r\t\v]简写为\s;[^\f\n\r\t\v]简写为\S;
8.使用POSIX字符集:
[:alnum:],[:alpha:],[:blank:],[:cntrl:],[:digit:],[:graph:],
[:lower:],[:print:],[:punct:],[:space:],[:upper:],[:xdigit:]
9.匹配一个或多个字符"+",添加到字符集的后面。
10.匹配零个或多个字符"*",添加到字符集的后面。
11.匹配零个或一个字符"?",添加到字符集的后面。
例:"http[s]?://[\w./]+"匹配url地址。
12.匹配次数限制"{m,n}",添加到字符集后面。
例:"[\w]{m}"匹配m次;"[\w]{m,}至少匹配m次;"[\w]{m,n}"匹配m到n次。
13.贪婪型匹配:*,+,{n,};懒惰型匹配(后面加"?"):*?,+?,{n,}?。
14.单词边界匹配(异配)"\b"(boundary)。
例:\bkim\b匹配单词kim前后为非单词;\b-\b匹配非单词-前后为单词。
15.单词边界匹配(同配)"\B"。例:\Bkim\B匹配单词kim前后为单词;\B-\B匹配非单词-前后为非单词。
16.字符串边界匹配,开头"^",结尾"$",匹配一段文本的开头和结尾。
例:"^\s*<\?xml.*\?>"匹配xml文档开头。
17.分行匹配模式"(?m)",与字符串边界符配合使用,添加到表达式开头,把每行当做一个字符串处理。(有的不支持)
例:"(?m)^\s*//.*$"匹配代码注释内容。
18.子表达式"(...)",限定作用域。
例:"(\d{1,3}\.){3}\d{1,3}"匹配ip地址;"(19|20)\d{2}"匹配四位数字年。
19.正则表达式不懂数学运算,把一切都看做是字符组成的字符串。
例:"(((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))\.){3}(((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))"匹配ip地址。
20.回溯引用匹配"(子表达式)...\n",\n引用第n个子表达式的匹配值。(不同语言有差异)
21.回溯引用在替换操作中的应用"$n",第一个正则表达式中的子表达式匹配内容,第二个正则表达式用$n引用第n个子表达式匹配的内容。
例:改变电话号码显示格式 Regex:(\w+)(-)(\w+)(-)(\w+) Replace:($1) $3-$5
22.在替换表达式里改变大小写"\l\u\L\U\E",\l或\u把下一个字符转换为小写或大写,\L或\U把之后的字符都转换为小写或大写直到遇到\E.
23.查找边界"左边界(?<=...)",右边界"(?=...)",非左边界"(?<!...)",非右边界"(?!...)"
24.嵌入条件表达式"(?(n)regex1|regex2)",第n个子表达式是否匹配,如果匹配用regex1,否则用regex2进行匹配。
例:"(\()?\d{3}(?(1)\)|-)\d{3}-\d{3}"匹配"(123)456-789"和"123-456-789"。
25.查找边界表达式用作条件。例:"\d{4}(?(?=-)-\d{4})"。

 

posted on 2012-05-06 21:40  ibook365  阅读(373)  评论(0编辑  收藏  举报