注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

碳基体

http://weibo.com/tanjiti

 
 
 
 
 

日志

 
 

正则表达式  

2011-05-24 21:12:19|  分类: basic |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

元字符(只能匹配一个位置或字符集合中的一个字符

^ 匹配行的开始

$ 匹配行的结束位置

\b 匹配单词的开始或结束字符

. 匹配除换行符号之外的任意字符

\w 匹配单词字符(字母、数字、汉字、下划线)

\W 匹配任意的非单词

\s匹配任意的空白字符(空格、制表符、换行符)

\S 匹配任意的非空白字符

\d 匹配任意的数字

\D匹配任意的非数字

\xn匹配ASCII码值等于n的字符,n必须是两位的十六进制

\un匹配unicode编码等于n的字符,n必须是一个4位的十六进制

\cx匹配由x指定的控制字符,x的值在A-Z或a-z之间(ctrl+x)

字符类

[0-9A-Za-z] 匹配任何数字、字母(大小写)和下划线,同\ws

[^0-9A-Za-z] 匹配任何非数字、字母(大小写)和下划线,同\W

字符转义 \反斜杠

反义

\W \S \D \B(匹配不是单词开头和结束的任何位置) [^a](匹配字符a除外的任何字符)

限定符

{n} 重复n次

{n,} 重复至少n次

{n,m} 重复至少n此,最大m次

* 重复至少0次

+ 重复至少1此

? 重复0或1次

*?尽可能少地使用重复的第一个匹配(限定词后加个?,表示尽可能少的匹配,懒惰匹配)

替换 |

先匹配左侧,当左侧不符合时才尝试匹配右侧

(?(expression)yes|no)表示要么与yes部分匹配要么与no部分匹配。其中no可以省略

(?(name)yes|no)表示以name命名的字符串要么与yes部分匹配要么与no部分匹配。其中no可以省略

后向引用:分组后,每一个组将自动赋予一个组号,该组号可以代表该组的表达式,组号编制规则从左到右从1开始递增,组号还可以自定义

\b \w*(\w+)\1\b,表示以两个重复字符结尾的单词,等价于

\b\w*(?<char>\w+)\k<char>\b

(?<name>expression)匹配字符串expression,并将匹配的文本保存到以name命名的组里,name不能包含标点符合,不能以数字开头

在php中叫做逆向引用

用${1}表示

零宽度断言

(expression)匹配expression,并将匹配的文本保存到自动命名的组里

(?: expression)匹配expression,不保存匹配的文本,也不给此组分配组号

(?=expression)匹配字符串expression前面的位置

\b\w+(?=ed\b)匹配以字符串ed结尾的单词的前面部分

(?<=expression)匹配字符串expression后面的位置

(?<=\ban)\w+\b匹配以字符串an开头的单词的后面部分

(?>expression) 匹配字符串expression一次

负向零宽度断言

(?! expression)  匹配后面不是字符串expression的位置

\b\w*a(?!b)\w*\b匹配单词字符串,a之后不能为b

\b\w{3}(?!\d+)匹配长度为3的单词字符串,该字符串之后不能是数字字符串

(?<!expression) 匹配前面不是字符串expression的位置

(?<!\d+)[a-zA-Z]+匹配不能以数字开头的字符串,该字符串只能包含大小写字母

注释(?#  )

(?<!\d+(?#不能以数字开头))[a-zA-Z]+S

  评论这张
 
阅读(657)| 评论(0)
推荐

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017