。字符描述
\cx 匹配由 x 指明的控制字符
\f 匹配一个换页符
\n 匹配一个换行符
\r 匹配一个回车符
\s 匹配任何空白字符,包括空格、制表符、换页符等
\S 匹配任何非空白字符
\t 匹配一个制表符
\v 匹配一个垂直制表符
\w 匹配包括下划线的任何单词字符
\W 匹配任何非单词字符
\. 匹配一个点
\d 匹配一个数字字符
\D 匹配一个非数字字符
[...] 字符类
[abc] 匹配单个字符:a、b 或 c
[a-z] 匹配任何小写字母
[A-Z] 匹配任何大写字母
[a-zA-Z0-9] 匹配任何字母或数字
[^...] 负值字符类
[^abc] 匹配除了a、b或c之外的任何字符
[^a-z] 匹配除了小写字母之外的任何字符
\d 匹配一个数字字符,等价于 [0-9]
\D 匹配一个非数字字符,等价于 [^0-9]
\w 匹配包括下划线的任何单词字符,等价于 [A-Za-z0-9_]
\W 匹配任何非单词字符,等价于 [^A-Za-z0-9_]
. 匹配除换行符 \n 之外的任何单个字符
\^ 匹配输入字符串的开始位置,除非在方括号表达式中使用,表示不接受该字符集合。如果在多行模式下进行匹配,\^ 还可以匹配行的开始位置。
$ 匹配输入字符串的结束位置,前面非行结束符之前的位置或字符串结束的位置。
\b 匹配一个单词边界,即位于字符\w 和 \W 之间的位置;例如,空格、标点符号。
\B 匹配非单词边界的位置。
(?...) 正则表达式分组
(?aiLmsux) 可选标志 设置
(?:...) 非捕获括号,即匹配不捕获匹配的部分
(?'name'...) 命名标签,记住匹配的部分
*x 匹配前面的模式 x 0 次或多次
*x? 匹配前面的模式 x 0 次或多次(非贪婪方式)
+x 匹配前面的模式 x 1 次或多次
+x? 匹配前面的模式 x 1 次或多次(非贪婪方式)
?x 匹配前面的模式 x 0 次或 1 次,或指明一个非贪婪限定符
??x 匹配前面的模式 x 0 次或 1 次,或指明一个非贪婪限定符
{x} 匹配前面的模式 x 次
{x,y} 匹配前面的模式 x 至 y 次
{x,y}? 匹配前面的模式 x 至 y 次,但尽可能少匹配
.? 匹配任意单个字符(换行符除外)
*(?:...) 匹配前面的模式任意次,但不贪婪
*(?i:...) 匹配前面的模式任意次,不贪婪,使用大小写不敏感的匹配
*(?!...) 匹配前面的模式任意次,不贪婪,不与括号中的模式匹配的文本
?* 重复任意次,但尽可能少重复
\数字 对模式的引用
\num 对num的引用
\num 对 num 所引用子模式的引用
\k<name> 对命名组 'name' 的引用
\ 字符 转义字符
\c 创建从一个控制字符到另一个的范围
\l 使在下一个字符中的元字符转为小写
\L...\E 使在...和\E之间的所有元素转变为小写
\u 使在下一个字符中的元字符转为大写
\U...\E 使在...和\E之间的所有元素转变为大写
\Q...\E 使在...和\E之间的所有元素没有任何特殊含义(和普通字符一样)
(?#...) 注释
(?imx:...) 正则表达式内联标志
(?imx) 标记
(?-imx) 关闭标记
(?(id/name)yes|no) 条件表达式
(?(2)true|false) 若命名编号2被定义则匹配true 否则匹配false
正则表达式是一种非常强大的工具,它可以帮助我们在文本中轻松地查找、替换和匹配字符串。但是,它的语法和规则非常灵活和复杂,需要一定的学习和实践才能掌握。正则表达式的学习和使用可以提高我们处理文本的效率和准确性,是程序员和数据分析师的重要技能之一。
总的来说,正则表达式是用来描述字符串匹配模式的工具,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。它的语法非常灵活,包括普通字符、特殊字符、字符类、分组、匹配次数等多种元素,可以用于构造复杂的字符串匹配模式。学习正则表达式需要掌握它的语法规则和常见用法,同时需要通过实际练习来加深对其的理解和掌握。正则表达式的学习和使用对于程序员和数据分析师来说是非常重要的,可以提高工作效率和准确性,是提升个人技能和职业竞争力的重要途径之一。