参考: https://www.geeksforgeeks.org/write-regular-expressions/
定义
正则表达式由一串字符序列
组成的search pattern
, 程序用它来处理 查找或者替换
操作。
组成元素
- 表重复含义(+/*/{…})
{n} : 重复n次
{min, }: 大于等于min次
{min, max}: 大于min小于max次
- 表任意字符(.)
表达式(.*) : 任意字符可出现任意次数
- 表起始或结束(^/$)
常用来锚点 以…开始 或 以…结尾
^: start position
$: end position
- 表字符类
字符类用来简略表示一组字符集合。
\s: 匹配任何空白字符和tab
\S: 非\s
\d: 匹配任何数字
\D: 非\d
\w : 匹配字符数字
\W: 非\w
[字符集合]: 匹配[]
里出现的每个字符,默认大小敏感
[^字符集合]: 非[字符集合]
[first-last]:字符范围匹配
- 表或者(|)
th(e|is|at): 可匹配the 或 this 或 that
- 表分组位置重复(\number)
\n表示第n个括号内的组将在当前位置重复。
([a-z])\1: 将匹配Geek中的“ee”,因为第二个位置的字符与匹配的第一个位置的字符相同。
- 表备注
( ?# comment ) : 行内备注
#[to end of line] : 行尾备注
巧记
- +: 匹配1次或多次(巧记:加1)
- ?: 匹配0次或1次 (巧记:三元表达式是(1)或否(0))
- *: 匹配0次或多次 (巧记:天上星星可能看不到(0) 或 看到你数不完(多))
- ^:
① 在字符集合(方括号[])内: 表示匹配不在该字符集合中的字符。例[^0-9]
表示匹配除了数字 0 到 9 之外的任意字符。
② 在正则表达式开头(不在方括号内): 表示匹配输入字符串的开始位置。例^abc
表示匹配以 “abc” 开头的字符串。