实用表达式
{}
限定符 (表示固定位数)。比如:\\d{5}
匹配长度有 5 个的数字,\\d{1,5}
最少匹配 1 个,最长匹配 5 个数字。
.{30,}
指匹配长度 30 以上的任意字符串。
[aeiou]
匹配中括号中任意字符。[^aeiou]
匹配除了 aeiou 这几个字母以外的任意字符。
HTTP 链接匹配:https?://[^\s"。?,,?)#]+
,句尾不含空格、中英文逗号、中文句号、问号,仅包含 http 和 https 链接
万能链接匹配:[a-zA-Z]+://[^\s"。?,,?)#]+
匹配万能前缀,如 ftp、tencent、lark。
匹配行:
|
|
匹配不同文本组,id=
或 contentId=
后的多个数字符号
|
|
^((?!abc).)*admin((?!abc).)*$
匹配 不包含 abc 但包含 admin 的字符串,匹配整行。^[https://blog.csdn.net/thewindkee/article/details/52785763]
((?!social.tmall.com)(?!ugc/detail.html).)*$
匹配不包含 social.tmall.com
和 ugc/detail.html
的字符串,匹配整行。^[https://blog.csdn.net/xiiii/article/details/89450341]
[₳$¢₴€₤¥$《]([a-zA-Z0-9]{11})[₳$¢₴€₤¥$《]
匹配淘口令,[]
指中内容任意匹配一项皆可。
前后匹配
前后匹配,前后元素只能出现一次,否则容易覆盖过多。
|
|
正则替换
正则全局替换不能带 \\
,此时用分割替换更方便。
|
|
表达式修饰符
元字符:区分大小写
常用正则代码 | 说明 |
---|---|
. | 匹配除换行符以外的任意字符 |
* | 匹配 0 个或多个.(有多少匹配多少,贪婪模式) |
? | 匹配 0 个或 1 个 (至少匹配一个) |
$ | 以什么结尾的,如\\d+0$ (以 0 结尾) |
^ | 以什么开头的,如^http 匹配以 http 开头的字符串 |
\w | 匹配字母或数字或下划线或汉字 |
\W | 匹配任意不是字母,数字,下划线,汉字的字符 |
\d | 匹配数字 |
\D | 匹配任意非数字的字符 |
\s | 匹配任意的空白符(空格 ,制表符 ) |
\S | 匹配任意不是空白符的字符 |
\r | 回车符 |
\n | 换行符 (一般情况下使用\r\n 匹配回车换行) |
\t | 制表符,Tab |
\u4e00-\u9fa5 | 非中文 |
常用分组语法
分类 | 代码/语法 | 说明 |
---|---|---|
捕获 | (exp) | 匹配 exp,并捕获文本到自动命名的组里 |
(?<name>exp) | 匹配 exp,并捕获文本到名称为 name 的组里,也可以写成 (?’name’exp) | |
(?:exp) | 匹配 exp,不捕获匹配的文本,也不给此分组分配组号 | |
零宽断言 | (?=exp) | 匹配 exp 前面的位置 |
(?<=exp) | 匹配 exp 后面的位置 | |
(?!exp) | 匹配后面跟的不是 exp 的位置 | |
(?<!exp) | 匹配前面不是 exp 的位置 | |
注释 | (?#comment) | 这种类型的分组不对正则表达式的处理产生任何影响,用于提供注释让人阅读 |