匹配单个字符
.可以匹配任何一个单个的字符
使用\(反斜杠)对元字符进行转义
匹配多个字符中的某一个
使用[]来定义一个字符集合,字符集合的匹配结果是能够与该集合里的任意一个成员相匹配的文本。
在[]中使用-来定义字符区间
常用的字符区间示例:[0-9][A-Za-z0-9]
使用^对字符集合进行取非操作,匹配不在集合区间里的一个字符
使用元字符
匹配空白字符
元字符 说明
[\b] 回退(并删除)一个字符(Backspace键)
\f 换页符
\n 换行符
\r 回车符
\t 制表符(Tab键)
\v 垂直制表符
匹配特定的字符类别 – 数字
\d 任何一个数字字符(等价于[0-9])
\D 任何一个非数字字符(等价于[^0-9])
\w 任何一个字母数字字符(大小写均可)或下划线字符(等价于[A-Za-z0-9_])
\W 任何一个非字母数字或非下划线字符(等价于[^A-Za-z0-9_])
\s 任何一个空白字符(等价于[\f\n\r\t\v])
\S 任何一个非空白字符(等价于[^\f\n\r\t\v])
匹配十六进制或八进制数值
在正则表达式里,十六进制数值要用前缀\x来给出
在正则表达式里,八进制数值要用前缀\0来给出
重复匹配
使用+后缀来匹配一个或多个字符
使用*后缀来匹配零个或多个字符
使用?后缀来匹配零个或一个字符
{n}后缀为重复匹配次数设定一个精确的值
{m, n}后缀为重复匹配次数设定一个区间
{m, }后缀匹配“至少重复多少次”
贪婪型元字符 懒惰型元字符
* + {n,} *? +? {n,}+
位置匹配
单词边界:
\b匹配的是一个位置:这个位置位于一个能够构成单词的字符(字母、数字和下划线,也就是与\w相匹配的字符)和一个不能用来构成单词的字符(也就是与\W相匹配的字符)之间。
\b匹配且只匹配一个位置,不匹配任何字符。
\B匹配非单词边界
字符串边界:
使用^来定义字符串的开头,使用$来定义字符串的结尾
多选结构
|是一个非常简洁的元字符,它的意思是“或”。我们能够把不同的子表达式组合成一个总的表达式,而这个总的表达式又能够匹配任意的字表达式。
多选结构的优先级很低
子表达式
把一个表达式划分为一系列的子表达式,可以把子表达式当作一个独立元素来使用。子表达式必须用(和)括起来
表达式的嵌套
回溯引用
回溯引用指的是模式的后半部分引用在前半部分中定义的子表达式
<[Hh]([1-6])>.*?</[Hh]\1>
<BODY>
<H1>Welcome to my Homepage</H1>匹配
Content is divided into two sections:<BR>
<H2>ColdFusion</H2>匹配
Information about Macromedia ColdFusion.
<H2>Wireless</H2>匹配
Information about Bluetooth, 802.11, and more.
<H2>This is not valid HTML</H3>不匹配
</BODY>
Hello,
[email protected] is my email address.
(\w+[\w\.]*@[\w\.]+\.\w+)
<A HREF=“mailto:$1”>$1</A>
Hello, <A HREF=“mailto:
[email protected]”>
[email protected]</A> is my email address.
前后查找
使用?=进行向前查找
使用?<=进行向后查找
使用(?!)进行向前查找取非
使用(?<!)进行向后查找取非
see Jeffs book
s/(?<=\bJeff)(?=s\b)/’/g
see Jeff’s book
嵌入条件
(?(backreference)trueregex) 条件(if then)
(?(backreference)trueregex|falseregex) 条件(if then else)