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

正则表达式

发布时间:2020-12-14 06:13:09 所属栏目:百科 来源:网络整理
导读:一、定义 正则表达式是对字符串操作的一种逻辑公式,一般使用正则表达式对字符串进行匹配和过滤 正则表达式由普通字符和元字符组成 优点:灵活,功能性强,逻辑性强 缺点:上手难,一旦上手,会受上这个东西 工具:各大文本编辑器一般都有正则匹配功能。在线

一、定义

  • 正则表达式是对字符串操作的一种逻辑公式,一般使用正则表达式对字符串进行匹配和过滤
  • 正则表达式由普通字符和元字符组成
  • 优点:灵活,功能性强,逻辑性强
  • 缺点:上手难,一旦上手,会受上这个东西
  • 工具:各大文本编辑器一般都有正则匹配功能。在线测试网址:http://tool.chinaz.com/regex/

二、普通字符

? ? 普通字符包含大小写字母、数字。在匹配普通字符时直接写就好。比如"abc"匹配的就是”abc”

三、元字符

1. 字符组

? ? 用[ ]括起来,在[ ]中出现的内容会被匹配。例如:[abc]匹配a或b或c

  • [a-z]:匹配a到z之间的一个字母
  • [0-9]:匹配所有阿拉伯数字的一个
  • [a-zA-Z0-9]:匹配a-z或A-Z或0-9其中的一个

2. 简单元字符

  • .:匹配换行符以外的任意字符
  • w:匹配字母或数字或下划线
  • s:匹配任意的空白符
  • d:匹配数字
  • n:匹配一个换行符
  • t:匹配一个制表符
  • b:匹配一个单词的结尾
  • ^:匹配字符串的开始
  • $:匹配字符串的结尾
  • W:匹配非字母或数字或下划线
  • D:匹配非数字
  • S:匹配非空白符
  • a|b:匹配字符a或字符b
  • ():匹配括号内的表达式,也表示一个组
  • [...]:匹配字符组中的字符
  • [^...]:匹配除了字符中字符的所有字符

3. 量词

  • *:重复0次或更多次
  • +:重复一次或更多次
  • ?:重复0次或一次
  • {n}:重复n次
  • {n,}:重复n次或更多次
  • {n,m}:重复n到m次

四、贪婪匹配与惰匹配

1. 贪婪匹配

? ? 量词中的*,+,{}都属于贪婪匹配,就是尽可能多的匹配到结果

str:hello world
reg: h.*
此时匹配的结果:hello world
str:<div>hello</div>
reg:<.*>
此时匹配的结果:<div>hello</div>

?

2. 惰性匹配

? ? 在使用.*后面如果加了?则是尽可能的少匹配

str:hello world
reg:h.*?
此时匹配的结果:h

?

str:<div>hello</div>
reg:<.*?>
此时匹配的结果:
<div>
</div>

?

?五、分组

? ? 在正则中使用()进行分组。

? ? 例如要匹配一个相对复杂的身份证号。身份证号分成两种。老的身份证号有15位,而新的身份证号有18位。并且新身份证号结尾可能是x

正则为:
^([1-9]d{16}[0-9x]|[1-9]d{14})$

六、转义

? ? 在正则表达式中,有很多有特殊意义的元字符,比如n和s等。如果要在正则中匹配正常的"n"而不是换行就需要对""进行转义。

? ? 同理,在python中,对于n,s等也是有特殊意义的,如果要得到"n"也需要对""进行转义,所以,如果需要匹配到字符串中n,在正则表达及python表达中需要写成如下表格形式。

目标 正则 python
n n \n

表1? "n"转义

? ? 此时可以利用r"n"不转义,即上表中python中正则表达可写为:r"n"

(编辑:李大同)

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

    推荐文章
      热点阅读