正则表达式语法
正则表达式(Regular Expression,简称 regex)是一种用于匹配字符串的模式。它由一系列字符和特殊符号组成,用于定义搜索模式。以下是正则表达式的基本语法规则:
1. 普通字符
- 普通字符(如字母、数字、空格等)直接匹配它们自己。
- 示例:
a匹配字符 “a”。
- 示例:
2. 特殊字符
- 特殊字符在正则表达式中有特殊含义,需要使用反斜杠
\进行转义。- 示例:
\.匹配字符 “.”。
- 示例:
3. 字符类
[...]:匹配括号内的任意一个字符。- 示例:
[abc]匹配 “a”、“b” 或 “c”。
- 示例:
[^...]:匹配不在括号内的任意一个字符。- 示例:
[^abc]匹配除了 “a”、“b”、“c” 之外的任意字符。
- 示例:
[a-z]:匹配指定范围内的任意一个字符。- 示例:
[a-z]匹配任意小写字母。
- 示例:
4. 预定义字符类
.:匹配除换行符以外的任意字符。\d:匹配任意数字,等价于[0-9]。\D:匹配任意非数字字符,等价于[^0-9]。\w:匹配任意字母、数字或下划线,等价于[a-zA-Z0-9_]。\W:匹配任意非字母、数字或下划线的字符,等价于[^a-zA-Z0-9_]。\s:匹配任意空白字符(包括空格、制表符、换行符等)。\S:匹配任意非空白字符。
5. 量词
*:匹配前面的字符零次或多次。- 示例:
a*匹配 “”、“a”、“aa” 等。
- 示例:
+:匹配前面的字符一次或多次。- 示例:
a+匹配 “a”、“aa” 等。
- 示例:
?:匹配前面的字符零次或一次。- 示例:
a?匹配 “” 或 “a”。
- 示例:
{n}:匹配前面的字符恰好 n 次。- 示例:
a{2}匹配 “aa”。
- 示例:
{n,}:匹配前面的字符至少 n 次。- 示例:
a{2,}匹配 “aa”、“aaa” 等。
- 示例:
{n,m}:匹配前面的字符至少 n 次,至多 m 次。- 示例:
a{2,4}匹配 “aa”、“aaa” 或 “aaaa”。
- 示例:
6. 边界匹配
^:匹配字符串的开头。- 示例:
^a匹配以 “a” 开头的字符串。
- 示例:
$:匹配字符串的结尾。- 示例:
a$匹配以 “a” 结尾的字符串。
- 示例:
\b:匹配单词边界。- 示例:
\bword\b匹配 “word” 这个单词。
- 示例:
\B:匹配非单词边界。
7. 分组和捕获
(...):将括号内的内容作为一个分组,并捕获匹配的文本。- 示例:
(abc)匹配 “abc” 并捕获。
- 示例:
(?:...):非捕获分组,匹配但不捕获。- 示例:
(?:abc)匹配 “abc” 但不捕获。
- 示例:
8. 选择
|:匹配左边或右边的表达式。- 示例:
a|b匹配 “a” 或 “b”。
- 示例:
9. 转义字符
\:用于转义特殊字符。- 示例:
\.匹配字符 “.”。
- 示例:
10. 零宽断言
(?=...):正向先行断言,匹配后面跟着指定模式的位置。- 示例:
a(?=b)匹配后面跟着 “b” 的 “a”。
- 示例:
(?!...):负向先行断言,匹配后面不跟着指定模式的位置。- 示例:
a(?!b)匹配后面不跟着 “b” 的 “a”。
- 示例:
(?<=...):正向后行断言,匹配前面是指定模式的位置。- 示例:
(?<=a)b匹配前面是 “a” 的 “b”。
- 示例:
(?<!...):负向后行断言,匹配前面不是指定模式的位置。- 示例:
(?<!a)b匹配前面不是 “a” 的 “b”。
- 示例:
11. 贪婪与非贪婪匹配
- 默认情况下,量词是贪婪的,会尽可能多地匹配字符。
- 在量词后加上
?可以使其变为非贪婪模式,尽可能少地匹配字符。- 示例:
a*?匹配零个或多个 “a”,但尽可能少地匹配。
- 示例:
示例
- 匹配电子邮件地址:
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ - 匹配 URL:
^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$
正则表达式的语法非常强大且灵活,掌握这些基本规则可以帮助你处理复杂的字符串匹配任务。
正则表达式基本语法规则详解

1085

被折叠的 条评论
为什么被折叠?



