1. 基本字符
- 普通字符 :匹配自身。例如,正则表达式
hello
匹配字符串中的"hello"。 - \d :匹配任何数字字符,相当于
[0-9]
。例如,\d\d\d
匹配三个连续的数字。- 示例 :
123
、456
- 示例 :
- \w :匹配任何字母数字字符(包括下划线),相当于
[A-Za-z0-9_]
。- 示例 :
a1b_
、Z9x
- 示例 :
- \s :匹配任何空白字符(空格、制表符等),相当于
[ \t\n\r\f\v]
。- 示例 :
"Hello, World!\nThis is a test."
中的换行符\n
- 示例 :
- . :匹配除换行符
\n
之外的任何单个字符。- 示例 :
a.c
可以匹配abc
、a1c
等
- 示例 :
2. 元字符
- ^ :匹配输入字符串的开始位置。
- 示例 :
^hello
匹配以"hello"开头的字符串。
- 示例 :
- $ :匹配输入字符串的结束位置。
- 示例 :
world$
匹配以"world"结尾的字符串。
- 示例 :
- *****:匹配前面的子表达式零次或多次。
- 示例 :
ab*
可以匹配a
、ab
、abb
等。
- 示例 :
- + :匹配前面的子表达式一次或多次。
- 示例 :
ab+
可以匹配ab
、abb
、abbb
等,但不匹配a
。
- 示例 :
- ? :匹配前面的子表达式零次或一次。
- 示例 :
ab?
可以匹配a
或ab
。
- 示例 :
- {n} :匹配前面的子表达式恰好n次。
- 示例 :
a{3}
匹配aaa
。
- 示例 :
- {n,} :匹配前面的子表达式至少n次。
- 示例 :
a{2,}
匹配aa
、aaa
、aaaa
等。
- 示例 :
- {n,m} :匹配前面的子表达式至少n次,至多m次。
- 示例 :
a{2,4}
匹配aa
、aaa
或aaaa
。
- 示例 :
3. 方括号表达式
- [abc] :匹配方括号内的任一字符。
- 示例 :
[abc]
可以匹配a
、b
或c
。
- 示例 :
- [^abc] :匹配不在方括号内的任一字符。
- 示例 :
[^abc]
可以匹配除a
、b
、c
之外的任何字符。
- 示例 :
- [a-z] :匹配指定范围内的任一字符。
- 示例 :
[a-z]
匹配任何小写字母。
- 示例 :
4. 分组和捕获
- () :用于分组子表达式,并可以捕获匹配的文本。
- 示例 :
(abc)\1
匹配abcabc
,其中\1
表示引用第一个捕获组。
- 示例 :
- | :表示"或"操作。
- 示例 :
a|b
匹配a
或b
。
- 示例 :
- ****:用于转义元字符,使其匹配自身。
- 示例 :
\.
匹配句点.
字符本身。
- 示例 :
5. 非捕获组和前瞻
- (?:...) :非捕获组,匹配但不捕获文本。
- 示例 :
(?:abc)
匹配abc
但不捕获。
- 示例 :
- (?=...) :正向前瞻,匹配前面的子表达式,但不包括在结果中。
- 示例 :
foo(?=bar)
匹配foo
,如果后面跟着bar
。
- 示例 :
- (?!..) :负向前瞻,匹配前面的子表达式,如果后面不跟着指定的子表达式。
- 示例 :
foo(?!bar)
匹配foo
,如果后面不是bar
。
- 示例 :
6. 边界匹配
- \b :匹配一个单词边界,即字与空格间的位置。
- 示例 :
\bword\b
匹配完整的单词word
。
- 示例 :
- \B:匹配非单词边界的位置。
7. 常见示例
- 匹配数字 :
\d+
匹配一个或多个连续的数字。- 示例 :
12345
- 示例 :
- 匹配字母 :
\w+
匹配一个或多个字母数字字符。- 示例 :
a1b2c3
- 示例 :
- 匹配邮箱地址 :
^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
- 示例 :
example@email.com
- 示例 :
- 匹配URL :
^(http|https)://[^\s/$.?#].[^\s]*$
- 示例 :
http://www.example.com
- 示例 :
- 提取手机号码 :
\b1[3-9]\d{9}\b
- 示例 :
13812345678
- 示例 :
- 匹配日期格式 :
\d{4}-\d{2}-\d{2}
- 示例 :
2023-05-15
- 示例 :