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
- 示例: