正则表达式
2023-06-02 14:05:03 9 举报
AI智能生成
正则表达式时间长了符号含义老是忘,做一个图方便查询下
作者其他创作
大纲/内容
关于正则学习
练习地址 : https://regexlearn.com/zh-cn
便捷查询地址:https://c.runoob.com/front-end/854/
基本匹配
输入你需要查询的字符,即可进行匹配搜索,例如搜索 curious,直接敲入curious即可
. 任何字符
可以匹配任何字符,但是只能表示一个字符,这里的一个并不是仅仅一个,而是一个一个匹配
例如:aeiou .可以全部匹配,但是其实是匹配了五次
例如:aeiou .可以全部匹配,但是其实是匹配了五次
[] 字符
[] 字符集
中括号扩起字符,是有可能在其中的字符,比如 b[ae]r 就可以匹配 bar ber 两个单词
[^] 否定字符集
中括号扩起的字符前面加上^,代表除了这些字符除外,比如 b[ae]r,可以匹配bir,不可以匹配bar,ber
[-] 范围字符集
例 a-z 就是a-z的所有中的所有字符 3-6 就是3-6中间的所有数字
中括号扩起后,只表示字符,*,+,?...,都不能做为数量匹配
字符次数匹配
* 匹配零次一次或多次
某个字符出现0次,1次,多次,例如 be*r 可以配 br,ber,beer
+ 字符一次或多次
某个字符出现1次或多次,例如 be+r 可以匹配ber,beer
? 字符出现1次或0次
某个字符不出现或者1次 例如 be?r 可以匹配 br ber
{} 表示字符出现次数上下界限
{n} 字符出现n次
例如 be{3}r 可以匹配 beeer
{m,} 字符出现至少次
例如 be{3,}r 可以匹配 beeer,beeeer,beeeeeer
{n,m} 字符出现n-m次都可以
例如 be{1,2}r 可以匹配 ber,beer
( ) 分组
对写入的字符组进行匹配
例如 (haa) 匹配 ha-ha,haa-haa,中的 两个haa
引用组 ()\n
\n 代表引用第几组,就可以不需要书写
例如 (ha)(haa)(ha)\2 完全匹配 hahaahahaa,\2 代表(haa)
(?:) 非捕获组
不捕获本组
- 例如 (?:ha)(haz)(ha)\1 捕获第一组(haz) 故 (?:ha)(haz)(ha)\1 完全匹配 hahazhahaz
特殊字符/便捷字符
特殊字符
| 或
可以理解为或,其实是表示包含不同分支
例:(c|r)at|dog 可匹配 cat rat dog 三个词语
\ 转义字符
特殊字符转义为字符本身
例: 123\* 可以匹配 123* 而不是123
^ 以什么开头
以某个字符(组)开头
例 :^[0-9] 以数字开头
例 : ^abc 以abc开头
例 : ^abc 以abc开头
$ 以什么结尾
以某个字符(组)结尾
例 :html$ 以html结尾
便捷字符
\w 字母,数字,下划线
\W 除了字母,数字,下划线
\d 数字
\D 非数字
\s 空白符
\S 非空白符
零宽断言
(?=) 正向先行断言
例: 匹配 Date: 4 Aug 3PM 中的3 可以这么匹配 \d+(?=PM) 即 数字后面带PM
(?!) 负向先行断言
例: 匹配 Date: 4 Aug 3PM 中的 4 可以这么匹配 \d+(?!PM) 即 数字后面不带PM
(?<=) 正向后行断言
例: 匹配 Product Code: 1064 Price: $5 中的5 可以这么匹配 (?<=\$)\d+ 即 数字前面带 $
((?<!) 负向后行断言
例: 匹配 Product Code: 1064 Price: $5 中的1064 可以这么匹配 (?<!\$)\d+ 即 数字前面不带$
全局标志
g
global 顾名思义,全局匹配,如果不加,只匹配一个
m
multiline 顾名思义 多行匹配,如果有换行,仍旧可以匹配,如果不加,只匹配第一行
i
case insensitive 顾名思义 忽觉大小写
匹配方式
贪婪匹配
正则表达式默认执行贪婪匹配。这意味着匹配内容会尽可能长。
请看下面的示例,它匹配任何以 r 结尾的字符串,以及前面带有该字符串的文本,但它不会在第一个 r 处停止匹配
匹配文本 ber beer beeer beeeer 匹配正则 .*r
请看下面的示例,它匹配任何以 r 结尾的字符串,以及前面带有该字符串的文本,但它不会在第一个 r 处停止匹配
匹配文本 ber beer beeer beeeer 匹配正则 .*r
懒惰匹配
懒惰匹配在第一次匹配时停止。
下面的例子中,在 * 之后添加 ?,将查找以 r 结尾且前面带有任意字符的第一个匹配项。这意味着本次匹配将会在第一个字母 r 处停止
匹配文本 : ber beer beeer beeeer 匹配正则 .*?r
下面的例子中,在 * 之后添加 ?,将查找以 r 结尾且前面带有任意字符的第一个匹配项。这意味着本次匹配将会在第一个字母 r 处停止
匹配文本 : ber beer beeer beeeer 匹配正则 .*?r
0 条评论
下一页