正则表达式 Regular Expression
Metacharacter
Base
限定符
*
前面字符重复零次或更多次
+
前面字符重复一次或更多次
?
前面字符重复零次或一次
{x}
前面字符重复x次
{x,}
前面字符重复x或更多次
{x,y}
前面字符重复不少 于x,不大于y次
.
除换行符以外的任意字符
\b
单词分界处
\b匹配这样的位置:它 的前一个字符和后一个 字符不全是(一个是,一 个不是或不存在)\w
单词:不少于一 个的连续的\w
\s
空白符
空格
制表符
换行符
全角空格
\d
数字
\w
字母
数字
下划线
汉字
^
字符串的开始
$
字符串的结束
字符集合
[aeiou]
[0-9]
等价于\d
[a-z0-9A-Z_]
等价于\w
[\d]
分支条件
|
注意顺序
反义
\D
任意非数字的字符
[^aeiou]
除了aeiou以外的任意字符
转义符
分组
或曰子表达式
(ooxx)
(?#comment)
注释
忽略空白符选项
向后引用
组号分配
0对应整个表达式
从左向右扫描两遍
从1开始
未命名组
命名组
(?
exp) 指定该组名称为name
尖括号可用单引号代替
(?:exp)
不捕获exp,不给此组分配组号
引用
\1
分组1中捕获的内容
零宽断言
匹配位置
类似\b
(?=exp)
此位置后面能匹配exp
\b\w+(?=ing\b)
匹配以ing结尾的单词的前面部分
(?<=exp)
此位置前面能匹配exp
(?!exp)
此位置后面不能匹配exp
(?!)
使匹配失败
(?
此位置前面不能匹配exp
(?<=<(\w+)>).*(?=<\/\1>)
不包含属性的简单HTML标签里的内容
测试工具
RegexBuddy
Regex Tester
regexpal.com
贪婪与懒惰
The match that begins earliest wins
贪婪匹配
限定符通常匹配尽可能多的字符
懒惰匹配
匹配尽可能少的字符
懒惰限定符
*?
+?
??
{x,y}?
{n,}?
处理选项
忽略大小写
多行模式
^扩展:匹配任意一行行首
$扩展:匹配任意一行行尾
单行模式
.扩展:匹配任意字符(包括\n)
忽略空白
忽略非转义空白,启用#注释
显式捕获
仅捕获已被显式命名的组
平衡组
(?'a'exp)
把捕获的exp命名为a,压入堆栈
(?'-a'exp)
遇到exp时弹出名为a的捕获内容,若堆栈为空,则此分组匹配失败
(?(a)yes|no)
若堆栈中存在命名为a的组(内容)则匹配yes,否则匹配no
(?(a)yes)
正则表达式 Regular Expression
Added: 2011-04-18 01:35:17
From: (Joined 2010-08-08 04:26:33)
69 views |0 downloads
正则表达式 Regular Expression