正则表达式速览
2021/6/13 10:26:14
本文主要是介绍正则表达式速览,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
在脚本中使用正则表达式可以很方便的对于字符串进行处理,利用不同的组合可以完成很强大的工作,然而一大堆符号看起来很复杂,实际上却很简单。
看下面负责完成匹配的多行重复
^\(.*\)\(\n\1\)\+$
在考虑到正则表达式时,要想到三个问题
- 匹配啥字符?
- 匹配数量?
- 匹配位置?
匹配啥字符?
正则表达式提供了一种称作元字符的东西,这个就是要匹配的模式。
字符 | 描述 | 等价 |
---|---|---|
[] | 匹配[]内的任意字符,-表示范围 | 无 |
\d | 匹配0-9 | [0-9] |
\x | 匹配16进制 | [0-9a-fA-F] |
\w | 匹配单词字母 | [a-zA-Z] |
\s | 匹配空白字符 | [\t] |
^ | 用在[]内表示匹配除了[]内字符以外的字符 | []的补集 |
\D | \d 匹配的补集 | [^0-9] |
\X | \x 匹配的补集 | [^0-9a-fA-F] |
\W | \w匹配的补集 | [^a-zA-Z] |
\S | \s 匹配的补集 | [^\t] |
\t | 匹配tab字符 | 无 |
. | 匹配任意一个字符 |
很容易记住\d\x\w对应于数字、十六进制、字母,然而它们对应的大写就是它们的补集
匹配数量?
符号 | 描述 |
---|---|
* | 0-任意个 |
\+ | 1-任意个 |
\? | 0-1个 |
\{n,m} | n-m个 |
\{n} | n个 |
\{n,} | n-任意个 |
\{,n} | 0-n个 |
匹配位置?
符号 | 描述 |
---|---|
^ | 匹配行首 |
$ | 匹配行尾 |
\< | 匹配词首 |
\> | 匹配词尾 |
额外的补充
-
特殊字符需要添加\来匹配对应的字符
-
\(内容1\) \(内容2\) ,内容1、2相当于一个变量,后续可用\1、\2来表示内容的具体含义
例子
1
^\(.*\)\(\n\1\)\+$
-
^$限定了行尾
-
\(.*\) 表示.*是一个变量,匹配任意多个字符,*对.作用表示匹配.这种字符的任意个
-
(\n\1)表示是回车和前面一致的内容,\1就是\(.*\)
-
\+ 作用于(\n\1),表示1-任意个的(\n\1)
合起来的意思就是匹配多个重复行。注意匹配数量总是作用前一个描述的事情
2
\(a\+\)[^a]\+\1
-
\(a+\)表示匹配任意个啊
-
[^a]除了a以外的字符
-
\+ 作用[^a],表示1-任意个的[^a]
-
\1表示\(a+\)
合起来的意思就是匹配头部和尾部的a字符数量相等,中间字符任意的字符串。
例如aabaa,acccca,但是aaba字符串不匹配,头尾的a不相等。
这篇关于正则表达式速览的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-11正则表达式学习:入门指南与实践技巧
- 2024-08-15正则表达式入门:基础教程与实践指南
- 2024-01-0939. 干货系列从零用Rust编写负载均衡及代理,正则及格式替换
- 2024-01-08如何编写高效的正则表达式?
- 2023-12-29"Matlab中的正则表达式:强大而灵活的工具"
- 2023-09-30这个正则 为啥同样的单号第二个就提取不出来?
- 2023-06-086.2 re 正则表达式
- 2023-06-06将字符串里的\x01,\x02这些替换掉用正则表达式无效?
- 2023-05-24正则表达式详解
- 2023-05-17我让gpt写了一段正则表达式代码,可是运行报错,可以帮忙看看哪里出了问题?