感觉正则表达式还挺常用的,之前学了,但总是容易忘记,这一次好好整理一下笔记,希望下次需要使用时候,可以更快的使用
工具
基础语法
Flag标志
i 忽略大小写
使我们编写的表达式不再大小写敏感
g 全局
全局标志使表达式选中所有匹配项,如果不启用全局标志,那么表达式只会匹配第一个匹配项
m 多行
正则表达式将所有文本视作一行。但如果我们使用了多行标志,它就会单独处理每一行。
组和引用
() 组,我们可以对一个表达式进行分组,并用这些分组来引用或执行一些规则
在成为组之后可以使用$1进行按照顺序替换
\1 引用,1表示分组的顺序,\2表示引用第二组
(?:) 非捕获组,可以让一个组不被引用,这个组就不会被引用,其他的组重新拍好顺序之后,按照顺序替换
字符类
[abc] 字符集,如果一个词中的字符可以是各种字符,我们就将所有的可选字符写进中括号 [] 中
[^abc] 否定字符集,一个词中的字符否定那几个
在中括号中是否定,如果在外面就是开头
[a-z] 范围,为了查找指定范围的字母,我们需要将起始字母和结束字母写进 [] 中,中间用连字符 - 分隔。区分大小写
. 点,可以匹配任何字符,包括特殊字符和空格
\w 单词,查找字母、数字和下划线
\W 非单词,匹配除字母、数字和下划线之外的字符。
\d 数字
\D 非数字
\s 空白符
\S非空白符
量词与分支
+ 加号,表示加号前面的字符出现一次或多次
* 星号,表示一个字符不出现或者出现多次
{1,3} 重复,在一个字符的末尾加上大括号表示这个字符可以出现的次数
? 可选,表示一个字符可选可不选
| 分支,竖线允许一个表达式包含多个不同的分支。所有分支用 | 分隔
比如,开头是
p或则P,可以使用(p|P)或者[pP]
\ 表示转义字符
转义字符可以使用在*,让他不再是出现多次的意思,而是普通的字符
锚点
^ 字符串或行的开头
$ 字符串或行的末尾
\b 单词边界,表示边界不会匹配不在边界中的
\btree\b,就只会匹配tree,不会匹配trees什么的
用来匹配完整的单词,数字
\B 非单词边界
匹配一个整体中的一部分
前瞻和后顾
(?=) 正向先行断言
为了只匹配后面有 PM 的数值,我们需要在表达式后面使用正向先行断言 (?=),并在括号内的 = 后面添加 PM
(?!) 负向先行断言
! 后面添加 PM,从而只匹配没有 PM 的数值
比如:
\$(?!\d+)匹配后面不是数字的$符号
(?<=) 正向后行断言
为了只匹配前面带有 $ 的数字。我们要在表达式前面使用正向后行断言 (?<=),并在括号内的 = 后面添加 $。
(?<!) 负向后行断言
匹配前面没有$的数字, (?<!$)\d+
匹配
贪婪匹配
正则表达式默认执行贪婪匹配。这意味着匹配内容会尽可能长
懒惰匹配
与贪婪匹配不同,懒惰匹配在第一次匹配时停止
.* 会尽可能多的进行匹配,只看首尾,不会在意中间字符的匹配

.*? 会匹配尽可能少的字符,但会匹配所有结果

6万+

被折叠的 条评论
为什么被折叠?



