Posted on 2014-11-04 11:36
S.l.e!ep.¢% 阅读(1419)
评论(0) 编辑 收藏 引用 所属分类:
Skynet
主要摘取自 这里, 正则表达式测试采用 这里, 版权归原作者所有
不幸的是,很多单词里包含
hi这两个连续的字符,比如
him,
history,
high等等。用
hi来查找的话,这里边的
hi也会被找出来。如果要
精确地查找hi这个单词的话,我们应该使用
\bhi\b。
\b是正则表达式规定的一个特殊代码(好吧,某些人叫它元字符,metacharacter),代表着单词的开头或结尾,也就是单词的分界处。虽然通常英文的单词是由空格,标点符号或者换行来分隔的,但是\b并不匹配这些单词分隔字符中的任何一个,它只匹配一个位置。
例子(黄色底表示匹配):
\bhello\b
匹配字符串
hello world
helloworld
假如你要找的是
hi后面不远处跟着一个Lucy,你应该用
\bhi\b.*\bLucy\b。
这里,.是另一个元字符,匹配除了换行符以外的任意字符。*同样是元字符,不过它代表的不是字符,也不是位置,而是数量——它指定*前边的内容可以连续重复使用任意次以使整个表达式得到匹配。因此,.*连在一起就意味着任意数量的不包含换行的字符。现在\bhi\b.*\bLucy\b的意思就很明显了:先是一个单词hi,然后是任意个任意字符(但不能是换行),最后是Lucy这个单词。
\bhello\b.*\bworld\b
hello wor
ld
hello abc world
\d是个新的元字符,匹配一位数字(0,或1,或2,或……)。
这里\d后面的{2}({8})的意思是前面\d必须连续重复匹配2次(8次)。\d{2}\d{8}
02012345678a
02012345678
. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线或汉字
\s 匹配任意的空白符
\d 匹配数字
\b 匹配单词的开始或结束
^ 匹配字符串的开始
$ 匹配字符串的结束
* 与 + 的区别: 不同的是*匹配重复任意次(可能是0次),而+则匹配重复1次或更多次。
例子:
w开头,总长为7的字母或数字或下划线或汉字
^w\b\w{6}\b -----> 错误
^w\w{6}\b -----> 正确
以abc结束的的字母或数字或下划线或汉字
\w*abc$ ------> 正确
\babc\w{6}
wwfdsddfds abcwwwwww
wwfdsddfdsabcwwwwww
abc\w{6}
wwfdsddfds abcwwwwww
wwfdsddfdsabcwwwwww
\babc\b
wwfdsddfds abc wwwwww
wwfdsddfdsabcwwwwww
^表示开始
$表示结束
字符转义
. 用 \.
* 用 \*
\ 用 \\