加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式学习笔记一

发布时间:2020-12-14 00:39:00 所属栏目:百科 来源:网络整理
导读:1、连字符 连字符,一般和[]一起使用,只有连字符在字符组内部,并且出现在两个字符之间时,才能表示字符的范围,如果出现在字符组的开头则只能表示连字符本身。 []是定义匹配的字符范围。比如 [a-zA-Z0-9] 表示相应位置的字符要匹配英文字符和数字。[s*]表示空

1、连字符

连字符,一般和[]一起使用,只有连字符在字符组内部,并且出现在两个字符之间时,才能表示字符的范围,如果出现在字符组的开头则只能表示连字符本身。

[]是定义匹配的字符范围。比如 [a-zA-Z0-9] 表示相应位置的字符要匹配英文字符和数字。[s*]表示空格或者*号。

2、排除型字符组

在方括号[….]中列出希望匹配的所有字符,这种字符组叫做”普通字符组”.
排除型字符组非常类似普通字符组[…],只是在开方括号[之后紧跟一个脱字符^,即写作[^….],表示”在当前位置,匹配一个没有列出的字符 “。

3、点号

.*匹配除换行符以外的任意字符
. 匹配.号本身
在字符组内部.也只能匹配自身

4、字符组[]

在正则表达式中,它表示“在同一个位置可能出现的各种字符”。

5、量词

作用:限定之前的字符出现次数

代码/语法 说明
* 重复零次或更多次,等价于{0,}
+ 重复一次或更多次,等价于{1,}
? 重复零次或一次,等价于{0,1}
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次

量词只能规定之前字符或字符组的出现次数(只能匹配单个字符)
如果要规定一个字符串的出现次数,必须使用括号”()”,在括号内填写字符串,在闭括号之后添加量词。

6、括号

1、捕获分组

作用:将括号内的子表达式捕获的字符串存放到匹配的结果中,供匹配完成后访问。
形式: 使用普通的括号”(…)”。

捕获分组的注意事项:
1、只要使用了括号,就存在捕获分组。
2、捕获分组按照开括号出现的从左到右的顺序编号,编号从1开始,遇到括号嵌套的情况也是如此。
3、如果捕获分组之后存在量词,则匹配结果中,捕获分组保存的是子表达式最后一次的匹配字符串。

2、不捕获文本

如果正则表达式很复杂,或者需要处理的文本很长,捕获分组会降低效率。
作用:仅仅用来对表达式分组,而不把分组捕获的文本存入结果。
形式:”(?:…)”。

3、反向引用

捕获组(Expression)在匹配成功时,会将子表达式匹配到的内容,保存到内存中一个以数字编号的组里,可以简单的认为是对一个局部变量进行了赋值,这时就可以通过反向引用方式,引用这个局部变量的值。一个捕获组(Expression)在匹配成功之前,它的内容可以是不确定的,一旦匹配成功,它的内容就确定了,反向引用的内容也就是确定的了。

反向引用必然要与捕获组一同使用的,如果没有捕获组,而使用了反向引用的语法,不同语言的处理方式不一致,有的语言会抛异常,有的语言会当作普通的转义处理。

作用:在表达式的某一部分,动态重复之前的子表达式所匹配的文本。
形式:”1” 其中的1为捕获分组的编号。

7、锚点

b 匹配单词的开始或结束
b 标识单词分界符,要求一侧是单词字符,另一侧是非单词字
单词字符通常指的是英文字符、数字字符,对中文不适用
非单词字符通常指的是各种标点符号和空白字符

8、环视

代码/语法 说明
(?=exp) 匹配exp前面的位置
(?< =exp) 匹配exp后面的位置
(?!exp) 匹配后面跟的不是exp的位置
(?< !exp) 匹配前面不是exp的位置

环视结构仅仅用于布尔判断,位置查找替换或者分割,结构内的子表达式所匹配的文本,不会保存在整个表达式的匹配结果之中,所以不能用于字符的获取。

9、匹配模式

改变某些结构的匹配规定。

形式 说明
I Case Insensitive 不区分大小写
S SingleLine(dot All) 点号通配,这里得dot(点)号是能够匹配所有的字符,包括换行和回车符
M MultiLine 多行模式
X Comment 注释模式

1、不区分大小写

作用:在匹配时,不对英文单词区分大小写。

2、单行模式

作用:更改点号 “.”的匹配规定,本来默认的匹配模式 “.”号是不会匹配换行和回车的,现在,设定了这个模式也就可以匹配换行符了。

3、多行模式

作用:更改 “^”和 “$”的匹配规定,它们可以匹配字符串内部各行文本的开头和结束位置。
A和Z则不受影响。

4、注释模式

作用:在正则表达式内部可以使用注释。
形式:注释以 “#”开头,以换行符结束(或者直到表达式的末尾)
使用此模式后,会忽略正则表达式中的所有空白字符。

10、模式的作用范围

作用:精确控制各个模式的作用范围。
形式:在表达式中,以(?ismx)的方式启用模式,以(?-ismx)的方式停用模式。

作者:jiankunking 出处:http://blog.csdn.net/jiankunking

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读