扩展正则表达式
扩展正则表达式就是在基本正则表达式的基础上,增加了一些元字符,而且有部分参数是不需要添加\转义符使用的。
字符匹配
代码 |
说明 |
. |
匹配任意单个字符 |
[ ] |
匹配范围内的任意单个字符 |
[^ ] |
匹配范围外的任意单个字符 |
字符串不匹配
否定顺序环视:
(?!(unfavored|unwanted))
(?![a-z]*(unfavored|unwanted))[a-z]{,12}
(?![a-z]*(unfavored|unwanted))
例如:
不匹配baidu:
^(?!baidu).*$
匹配次数
代码 |
说明 |
* |
匹配前面的字符任意次(0、1、或多次); |
.* |
任意长度的任意字符; |
+ |
匹配前面的字符至少1次 |
? |
匹配前面的字符0次或者1次,即前面的字符可有可无; |
{m} |
其前面的字符出现m次,m为非负整数; |
{m,n} |
其前面字符出现最少m次最多n次,{m,}最少m次,{o,n}最多n次 |
位置锚定
代码 |
说明 |
^ |
行首 |
$ |
行尾 |
<, \b |
词首 |
>,\b |
词尾 |
分组及引用
代码 |
说明 |
( ) |
分组 |
\1,\2,… |
后向引用 |
注意:特殊用法 C|cat:表示C或cat ,表示整个左侧或整个右侧。 (C|c)at:表示Cat或cat
其他
列出几个扩展特殊符号:
代码 |
说明 |
+ |
于 . * 作用类似,表示 一个或多个重复字符。 |
? |
于 . * 作用类似,表示0个或一个字符。 |
| |
表示或关系,比如 ‘gd |
() |
将部分内容合成一个单元组(abc |
比如 要搜索 glad 或 good 可以这样 ‘g(la |
oo)d’ ()的好处是可以对小组使用 + ? * 等。 |
比如要搜索A和C开头结尾,中间有至少一个(xyz) 的串,可以这样 : ‘A(xyz)+C’
正则表达式元字符
元字符
普通转义
代码 |
说明 |
. |
匹配除换行符以外的任意字符 |
\w |
匹配字母或数字或下划线或汉字 |
\s |
匹配任意的空白符 |
\d |
匹配数字 |
\b |
匹配单词的开始或结束 |
^ |
匹配字符串的开始 |
$ |
匹配字符串的结束 |
特殊字符转移义
比如[,可以使用[,如果[不好使,可以试试\[,这个在不同命令中不一样,awk -F ” 中必须是\[
重复次数
代码 |
说明 |
* |
重复零次或更多次 |
+ |
重复一次或更多次 |
? |
重复零次或一次 |
{n} |
重复n次 |
{n,} |
重复n次或更多次 |
{n,m} |
重复n到m次 |
反义
代码 |
说明 |
\W |
匹配任意不是字母,数字,下划线,汉字的字符 |
\S |
匹配任意不是空白符的字符 |
\D |
匹配任意非数字的字符 |
\B |
匹配不是单词开头或结束的位置 |
[^x] |
匹配除了x以外的任意字符 |
[^aeiou] |
匹配除了aeiou这几个字母以外的任意字符 |
其他
代码 |
说明 |
\a |
报警字符(打印它的效果是电脑嘀一声) |
\b |
通常是单词分界位置,但如果在字符类里使用代表退格 |
\t |
制表符,Tab |
\r |
回车 |
\v |
竖向制表符 |
\f |
换页符 |
\n |
换行符 |
\e |
Escape |
\0nn |
ASCII代码中八进制代码为nn的字符 |
\xnn |
ASCII代码中十六进制代码为nn的字符 |
\unnnn |
Unicode代码中十六进制代码为nnnn的字符 |
\cN |
ASCII控制字符。比如\cC代表Ctrl+C |
\A |
字符串开头(类似^,但不受处理多行选项的影响) |
\Z |
字符串结尾或行尾(不受处理多行选项的影响) |
\z |
字符串结尾(类似$,但不受处理多行选项的影响) |
\G |
当前搜索的开头 |
\p{name} |
Unicode中命名为name的字符类,例如\p{IsGreek} |
(?>exp) |
贪婪子表达式 |
(? |
平衡组 |
(?im-nsx:exp) |
在子表达式exp中改变处理选项 |
(?im-nsx) |
为表达式后面的部分改变处理选项 |
(?(exp)yes|no) |
把exp当作零宽正向先行断言,如果在这个位置能匹配,使用yes作为此组的表达式;否则使用no |
(?(exp)yes) |
同上,只是使用空表达式作为no |
(?(name)yes|no) |
如果命名为name的组捕获到了内容,使用yes作为表达式;否则使用no |
(?(name)yes) |
同上,只是使用空表达式作为no |
(括号)、[中括号]、{大括号}的区别小结
正则表达式的() [] {}有不同的意思。
() 是为了提取匹配的字符串。表达式中有几个()就有几个相应的匹配字符串。
(\s*)表示连续空格的字符串。
[]是定义匹配的字符范围。比如 [a-zA-Z0-9] 表示相应位置的字符要匹配英文字符和数字。[\s*]表示空格或者 号。
{}一般用来表示匹配的长度,比如 \s{3} 表示匹配三个空格,\s[1,3]表示匹配一到三个空格。
(0-9) 匹配 ‘0-9′ 本身。 [0-9] 匹配数字(注意后面有 *,可以为空)[0-9]+ 匹配数字(注意后面有 +,不可以为空){1-9} 写法错误。
[0-9]{0,9} 表示长度为 0 到 9 的数字字符串。
大括号{次数}可以用于小括号前,类似:(分组匹配){次数} 这种
例如:在PHP中过滤内容里面有数字或空格数字
preg_replace("/\d{1,}\s{0,1}/", "xxxxxxxx", $signaturecontent);
相关文章
本站已关闭游客评论,请登录或者注册后再评论吧~