要想学会正则表达式,理解元字符是一个必须攻克的难关。
不用刻意记
. :匹配任何 单个字符 。
例如正则表达式“ b.g ” 能匹配如下字符串:“ big” 、“ bug” 、“ bg” ,但是不匹配“ buug ” ,“ b..g ” 可以匹配“ buug ” 。
不用刻意记
. :匹配任何 单个字符 。
例如正则表达式“ b.g ” 能匹配如下字符串:“ big” 、“ bug” 、“ bg” ,但是不匹配“ buug ” ,“ b..g ” 可以匹配“ buug ” 。
[ ]
:匹配括号中的
任何
一个
字符。
例如正则表达式“ b[ aui ]g” 匹配 bug 、 big 和 bag ,但是不匹配 beg 、 baug 。可以在括号中使用 连字符“ -” 来指定字符的区间 来简化表示,例如正则表达式 [0-9] 可以匹配任何数字字符,这样正则表达式“ a[0-9]c” 等价于“ a[0123456789]c” 就可以匹配“ a0c” 、“ a1c” 、“ a2c” 等字符串;还可以制定多个区间,例如“ [A- Za -z]” 可以匹配任何大小写字母,“ [A-Za-z0-9]” 可以匹配任何的大小写字母或者数字。
例如正则表达式“ b[ aui ]g” 匹配 bug 、 big 和 bag ,但是不匹配 beg 、 baug 。可以在括号中使用 连字符“ -” 来指定字符的区间 来简化表示,例如正则表达式 [0-9] 可以匹配任何数字字符,这样正则表达式“ a[0-9]c” 等价于“ a[0123456789]c” 就可以匹配“ a0c” 、“ a1c” 、“ a2c” 等字符串;还可以制定多个区间,例如“ [A- Za -z]” 可以匹配任何大小写字母,“ [A-Za-z0-9]” 可以匹配任何的大小写字母或者数字。
( )
:将
()
之间括起来的表达式定义为“组”
(group)
,并且将匹配这个表达式的字符保存到一个临时区域
,
这个元字符在字符串提取的时候非常有用。把一些字符表示为一个整体。
改变优先级、定义提取组
两个作用。
|
:将两个匹配条件进行逻辑“或”运算。
' z|food ' 能匹配 "z" 或 "food" 。 '( z|f ) ood ' 则匹配 " zood " 或 "food" 。
“ e{1,3}” 将匹配“ seeeeeeeed ” 中的前三个“ e”
原文链接:https://www.f2er.com/regex/361797.html' z|food ' 能匹配 "z" 或 "food" 。 '( z|f ) ood ' 则匹配 " zood " 或 "food" 。
*
:匹配
0
至多个在它之前的子表达式,和通配符*没关系
。
例如正则表达式“ zo *” 能匹配 “ z” 、“ zo ” 以及 “ zoo” ;因此“ .*” 意味着能够匹配任意字符串。 "z( b|c )*"→ zb 、 zbc 、 zcb 、 zccc 、 zbbbccc 。 "z(ab)*" 能匹配 z 、 zab 、 zabab (用括号改变优先级)。
例如正则表达式“ zo *” 能匹配 “ z” 、“ zo ” 以及 “ zoo” ;因此“ .*” 意味着能够匹配任意字符串。 "z( b|c )*"→ zb 、 zbc 、 zcb 、 zccc 、 zbbbccc 。 "z(ab)*" 能匹配 z 、 zab 、 zabab (用括号改变优先级)。
+
:匹配前面的子表达式
一次或多次
,和*对比(
0
到多次
)。
例如正则表达式 9+ 匹配 9 、 99 、 999 等。 “ zo +” 能匹配 “ zo ” 以及 “ zoo” ,不能匹配 "z" 。
例如正则表达式 9+ 匹配 9 、 99 、 999 等。 “ zo +” 能匹配 “ zo ” 以及 “ zoo” ,不能匹配 "z" 。
?
:匹配前面的子表达式
零次或一次
。
例如, "do( es )?" 可以匹配 "do" 或 "does" 。一般用来匹配“可选部分”。
例如, "do( es )?" 可以匹配 "do" 或 "does" 。一般用来匹配“可选部分”。
{n}
:匹配确定的
n
次。
" zo {2}"→zoo 。例如,“ e{2}” 不能匹配“ bed” 中的“ e” ,但是能匹配“ seed” 中的两个“ e” 。
{n,} : 至少匹配 n 次。
例如,“ e{2,}” 不能匹配“ bed” 中的“ e” ,但能匹配“ seeeeeeeed ” 中的所有“ e” 。
{
n,m
}
:最少匹配
n
次且最多匹配
m
次。" zo {2}"→zoo 。例如,“ e{2}” 不能匹配“ bed” 中的“ e” ,但是能匹配“ seed” 中的两个“ e” 。
{n,} : 至少匹配 n 次。
例如,“ e{2,}” 不能匹配“ bed” 中的“ e” ,但能匹配“ seeeeeeeed ” 中的所有“ e” 。
“ e{1,3}” 将匹配“ seeeeeeeed ” 中的前三个“ e”
^
(
shift+6
):匹配一行的
开始
。
例如正则表达式“ ^regex” 能够匹配字符串“ regex 我会用”的开始,但是不能匹配“我会用 regex” 。
例如正则表达式“ ^regex” 能够匹配字符串“ regex 我会用”的开始,但是不能匹配“我会用 regex” 。
^
另外一种意思:非!(暂时不用理解)