正则表达式
一,介绍一下什么是正则表达式
正则表达式可以有效的筛选出需要的文本,然后结合相应的支持的工具或语言,完成任务需求。
二,基本正则表达式
匹配字符
(1)格式
-
. 匹配任意单个字符,不能匹配空行
-
[] 匹配指定范围内的任意单个字符
-
[^] 取反
-
[:alnum:] 或 [0-9a-zA-Z]
-
[:alpha:] 或 [a-zA-Z]
-
[:upper:] 或 [A-Z]
-
[:lower:] 或 [a-z]
-
[:blank:] 空白字符(空格和制表符)
-
[:space:] 水平和垂直的空白字符(比[:blank:]包含的范围广)
-
[:cntrl:] 不可打印的控制字符(退格、删除、警铃...)
-
[:digit:] 十进制数字 或[0-9]
-
[:xdigit:]十六进制数字
-
[:graph:] 可打印的非空白字符
-
[:print:] 可打印字符
-
[:punct:] 标点符号
配置次数
(1)格式
-
* 匹配前面的字符任意次,包括0次,贪婪模式:尽可能长的匹配
-
.* 任意前面长度的任意字符,不包括0次
-
\? 匹配其前面的字符0 或 1次
-
+ 匹配其前面的字符至少1次
-
{n} 匹配前面的字符n次
-
{m,n} 匹配前面的字符至少m 次,至多n次
-
{,n} 匹配前面的字符至多n次
-
{n,} 匹配前面的字符至少n次
位置锚定:定位出现的位置
(1)格式
-
^ 行首锚定,用于模式的最左侧
-
$ 行尾锚定,用于模式的最右侧
-
^PATTERN$,用于模式匹配整行
-
^$ 空行
-
^[[:space:]].*$ 空白行
-
< 或 \b 词首锚定,用于单词模式的左侧
-
> 或 \b 词尾锚定;用于单词模式的右侧
-
<PATTERN>
分组和后向引用
(1)格式
① 分组:() 将一个或多个字符捆绑在一起,当作一个整体进行处理
分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些变量的命名方式为: \1, \2, \3, ...
② 后向引用
引用前面的分组括号中的模式所匹配字符,而非模式本身
\1 表示从左侧起第一个左括号以及与之匹配右括号之间的模式所匹配到的字符
\2 表示从左侧起第2个左括号以及与之匹配右括号之间的模式所匹配到的字符
以此类推
& 表示前面的分组中所有字符
三,扩展正则表达式
(1)字符匹配:
-
. 任意单个字符
-
[] 指定范围的字符
-
[^] 不在指定范围的字符
-
次数匹配:
-
* :匹配前面字符任意次
-
? : 0 或1次
-
+ :1 次或多次
-
{m} :匹配m次 次
-
{m,n} :至少m ,至多n次
(2)位置锚定:
-
^ : 行首
-
$ : 行尾
-
<, \b : 语首
-
>, \b : 语尾
-
分组:()
-
后向引用:\1, \2, ...
(3)总结
除了<, \b : 语首、>, \b : 语尾;使用其他正则都可以去掉\
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律