正则表达式有很多版本,在不同语言中支持不同,还有些有扩充
如:sed默认贪婪模式,不支持懒惰、零宽断言
元字符:
. 匹配除换行符(win是\r,Linux是\n)外的任意字符
\w 匹配字母、数字、下划线或汉字
\s 匹配空格符
\d 匹配数字(在sed中不支持,用[0-9])
\b 匹配单词的开始或结束
^ 匹配字符串的开始
$ 匹配字符串的结尾
\ 转义字符
限定符:
* 重复0或多次
+ 重复1或更多次
? 重复0或1次
{n} 重复n次
{n,} 重复n或更多次
{n,m} 重复n-m次
反义:
\W
\S
\D
\B
[^x]
[^aeiou]
捕获:
(exp) 匹配exp,并捕获文本到自动命名组里
(?<name>ex) 匹配exp,并捕获文本到name组里
(?:exp) 匹配exp,不捕获匹配的文本,也不分配组号
零宽断言:
(?=exp) 匹配exp前面的位置
(?<=exp) 匹配exp后面的位置
(?<!exp)
懒惰与贪婪:
*? 重复任意次,但尽可能少
其他限定符后加? 也是表示尽可能少重复