语法

匹配数字

语法 说明
[0-6] 匹配数字”1”、”2”、”3”、”4”、”5”、”6”
[13579] 匹配”1”、”3”、”5”、”7”、”9”
\d 匹配所有数字0~9,等效于:[0-9]

匹配字母

语法 说明
[a-f] 匹配字母”a”、”b”、”c”、”d”、”e”、”f”
[a-fA-F] 匹配字母”a”、”b”、”c”、”d”、”e”、”f”和”A”、”B”、”C”、”D”、”E”、”F”
[\w] 匹配26个大小写字母、数字和下划线;等效于:[a-zA-Z0-9_]

匹配非打印字符

特殊字符的匹配有些编程语言可能会支持的更多。

语法 说明
\f 匹配一个换页符
\n 匹配一个换行符
\r 匹配一个回车符
\t 匹配一个制表符
\v 匹配一个垂直制表符
\uxxx 匹配一个unicode字符,其中xxx是unicode的编码

匹配数量

语法 匹配数量 说明 示例 示例匹配结果
{1,3} 匹配1~3次 \d\.\d{1,2} “0.25”、”1.2”
{1,} 匹配1次以上 \d\.\d{1,} “0.25”、”3.1415926”
{,2} 匹配0~2次 \wo{,2}\w “ab”、”boy”、”good”
{2} 匹配2次 \wo{2}\w “good”、”cool”、”room”
? 匹配0~1次 等同”{,1}” https? “http”、”https”
* 匹配0~n次 等同”{,}” \wo*\w “ab”、”boy”、”good”、”gooo…d”
+ 匹配1~n次 等同”{1,}” \d\.\d+ “0.25”、”3.1415926”

负(反向)匹配

正则表达式 说明
[^a-z] 匹配 “a” 到 “z” 之外的字符
[^abc] 匹配 “a”、”b”、”c” 之外的字符
[^\w] 等同于 “\W”
[^\d] 等同于 “\D”
[^\s] 等同于 “\S”

引用变量

image.png

正则表达式 替换为 结果
(eth0) $1abc eth0abc

常用的元字符

元字符 说明
. 匹配除换行符以外的任意字符
\s 匹配任意的空格
\d或[0-9] 匹配一个数字
^ 匹配字符串的开始位置
$ 匹配字符串的结束位置
\w 匹配字母、数字和下划线
等效于[a-zA-Z0-9_]

eg.

  • .* 匹配任意行
  • \d\d 匹配连续的2个数字
  • ^[0-9] 匹配字符串开始位置是数字的字符串
  • \s$ 匹配字符串结尾是空格的字符串
  • ^$ 匹配不含空格的空行
  • ^\s*$ 匹配含空格空行

    常用正则

    匹配IP地址

    1. ([0-9]{1,3}\.){3}[0-9]{1,3}

    反向匹配

    1. # 查找不包含关键字的行
    2. ^((?!innerIpAddress).)*$

    零宽断言

  • 先行断言 (?=exp)

  • 后发断言 (?<=exp)

    1. # 匹配eth0的IP
    2. ifconfig eth0|grep -oP "[0-9]{1,3}\.[0-9]{1,3}.*(?=netmask)"

    相关工具

  • 在线正则表达式工具:https://rubular.com/

  • 正则表达式语法分析:https://regexper.com/
  • 正则表达式调试、性能分析:https://regex101.com/