正则表达式 学习笔记(二)
纠正一个错误,昨天我用了Match这个只能匹配出第一个 用Matches可以匹配出所有符合正则表达式的字符
4.字符类的反义
- [^a]表示匹配任何不是“a”的字符
- [^a-zA-Z0-9]表示匹配任何不是字母也不是数字的字符
- [\^abc]匹配一个为“^”或者a或者b或者c的字符
- [^\^]表示匹配任何不为“^”的字符
5.转义字符类
如何有效的缩短正则表达式的长度?
- \d = [0-9] 作用相同,都是匹配任何一个数字。(要匹配\d,应该使用正则表达式\\d)
- \D = [^0-9] 作用相同,表示匹配一个非数字字符。
- \w = [0-9A-Za-z] 作用相同,都表示匹配一个数字或字母字符
- \W = [^0-9A-Za-z] 作用相同,表示匹配一个非数字同时不是字母的字符。
- \s意味着匹配一个空字符(空格,制表符,回车或者换行)
- \S表示匹配一个非空字符。
6.重复
在字符或字符集之后,你可以使用{ }大括号来表示重复
- 正则表达式a{1}与a意思相同,都表示匹配字母a
- a{3}表示匹配字符串“aaa”
- a{0}表示匹配空字符串。从这个正则表达式本身来看,它毫无意义。如果你对任何文本执行这样的正则表达式,你可以定位到搜索的起始位置,即使文本为空。
- a\{2\}表示匹配字符串“a{2}”
- 在字符类中,大括号没有特殊含义。[{}]表示匹配一个左边的大括号,或者一个右边的大括号
示例
z.......z =
z.{7}z
\d\d\d\d-\d\d-\d\d =
\d{4}-\d{2}-\d{2}
[aeiou][aeiou][aeiou][aeiou][aeiou][aeiou] =
[aeiou]{6}
注意:重复字符是没有记忆性的,比如[abc]{2}表示先匹配”a或者b或者c”,再匹配”a或者b或者c”,与匹配”aa或者ab或者ac或者ba或者bb或者bc或者ca或者cb或者cc“一样。[abc]{2}并不能表示匹配”aa或者bb或者cc“
7.指定重复次数范围
重复次数是可以指定范围的
- x{4,4}与x{4}相同
- colou{0,1}r表示匹配colour或者color
- a{3,5}表示匹配aaaaa或者aaaa或者aaa
- a{1,}表示匹配一个或一个以上的连续字符a。依然是匹配最长字符串。当找到第一个a之后,正则表达式会尝试匹配尽量多个的连续字母a。
- .{0,}表示匹配任意内容。无论你输入的文本是什么,即使是一个空字符串,这个正则表达式都会成功匹配全文并返回结果。
8.重复的转义字符
- ?与{0,1}相同,比如,colou?r表示匹配colour或者color
- *与{0,}相同。比如,.*表示匹配任意内容
- +与{1,}相同。比如,\w+表示匹配一个词。其中”一个词”表示由一个或一个以上的字符组成的字符串,比如_var或者AccountName1.
- \?\*\+ 表示匹配字符串”?*+”
- [?*+]表示匹配一个问号,或者一个*号,或者一个加号
示例
.{0,}
= .*[^"]{0,} = [^"]*
x?x?x? = x{0,3}
y*y* = y*
z+z+z+z+ = z{4,}
9.非贪婪匹配
这个有必要解释一波,通过在句尾加上一个问号,可以使得字符串重复不再匹配最长字符。
- 表示匹配\d\d\d\d或者\d\d\d\d\d。也就是和\d{4}一样
- colou??r与colou{0,1}r相同,表示找到color或者colour。这与colou?r一样。
- “.*?”表示先匹配一个双引号,然后匹配最少的字符,然后是一个双引号,与上面两个例子不同,这很有用。
10.选择匹配
- cat|dog表示匹配”cat”或者”dog”
- red|blue|以及red||blue以及|red|blue都表示匹配red或者blue或者一个空字符串
- a|b|c与[abc]相同
- cat|dog|\|表示匹配”cat”或者”dog”或者一个分隔符”|“
- [cat|dog]表示匹配a或者c或者d或者g或者o或者t或者一个分隔符“|”
示例
s|t|u|v|w = [s-w]
aa|ab|ba|bb = [ab]{2}
[abc]|[^abc] = .
[^ab]|[^bc] = [^b]
[ab][ab][ab]?[ab]? = [ab]{2,4}
转载请注明:http://www.cnblogs.com/CoffeeEddy/p/5608863.html