详解正则表达式

举报
huahua.Dr 发表于 2021/08/13 18:00:48 2021/08/13
【摘要】 一、什么是正则表达式正则表达式就是一个用正则符号写出来的公式,这些公式就是利用指定正则符号规则来检索、匹配和替换字符串的。那么什么又是正则符号呢?正则符号就是一些特定的元字符(字符集),用一些特殊的符号表示某种特定种类的字符或者位置。那么元字符(字符集)有哪些呢,主要有以下几种类别:普通字符:字母[a-zA-Z],数字[0-9],下划线[_],汉字,标点符号等标准字符:能够与多种普通符号匹配...

一、什么是正则表达式

正则表达式就是一个用正则符号写出来的公式,这些公式就是利用指定正则符号规则来检索、匹配和替换字符串的。

那么什么又是正则符号呢?正则符号就是一些特定的元字符(字符集),用一些特殊的符号表示某种特定种类的字符或者位置。

那么元字符(字符集)有哪些呢,主要有以下几种类别:

  • 普通字符:字母[a-zA-Z],数字[0-9],下划线[_],汉字,标点符号等
  • 标准字符:能够与多种普通符号匹配的简单表达式,如\d匹配0到9的任意数字等
  • 限定字符(量词):用于表示匹配的字符数量,如+匹配一个或多个等
  • 定位字符(边界字符):标记匹配符合某种条件的位置,如开始位置^,结束位置$等

二、正则表达式的作用

前面也说了,正则表达式就是一种对字符串操作的逻辑公式,用事先定义好的一些特殊字符(元字符)组合成一套规则,然后用这套规则对字符串进行过滤操作。

因此,给定了一个正则表达式和字符串,可以达到以下目的:

  • 可以匹配给定的字符串是否符合正则表达式的过滤逻辑
  • 可以通过正则表达式,从字符串中提取或替换我们想要的特定部分

三、为什么出现正则表达式呢

正则表达式的灵活性、逻辑性和功能性非常强,可以非常迅速的用简单的方式去帮助我们在一些复杂的字符串文本中,检索匹配、提取替换我们想要筛选的字符,提高我们处理字符文本内容的效率,辅助我们快速开发,将复杂的字符处理进行简单化;虽说正则表达式比较强大,但是也是需要一定的学习成本的,需要熟悉掌握正则表达式中那些正则符号及使用规则。具体有哪些正则符号呢?怎么使用呢?

四、正则表达式详解

每个表达式都由下面的正则符号组成的一组规则。

特别说明:需要匹配一些特殊字符或元字符本身,需要使用反斜杠\转义,需要转义的字符有:$  (  )  * +  .  [ ]  ?  \  ^  {  }  |

1.正则符号(元字符)

普通字符:

匹配字母、数字、汉字、下划线等

 

[a-z]

匹配所有小写字母

[A-Z]

匹配所有大写字母

[a-zA-Z]

匹配所有字母

[0-9]

匹配0-9的数组

[汉字]

匹配汉字

[_]

匹配下划线

[a-z0-9A-Z_]

匹配字母数字和下划线

标准字符:可以与多种普通字符匹配的简单表达式

.

匹配除了换行符以外的任意字符

\w(小写字母w)

匹配字母或数字或下划线

\s(小写字母s)

匹配任意的空白字符

\d(小写字符d)

匹配数字

\b(小写字母b)

匹配指定单词边界的字符

\W(大写字母W)

匹配任意不是字母、数字、下划线的字符

\S(大写字母S)

匹配任意非空格字符

\D(大写字母D)

匹配任意非数字的字符

\B(大写字母B)

匹配指定单词非边界的字符

\t

匹配tab

\n

匹配换行符

\r

匹配回车符

\f

匹配换页符

\e

匹配escape转义符

\0hh

匹配八进制值hh所表示的字符

\xhh

匹配十六进制值hh所表示的字符

\uhhhh

匹配十六进制值hhhh所表示的Unicode字符

 

限定字符

    •  

重复零次或者多次

+

重复一次或者多次

?

重复零次或一次(懒惰模式:在匹配元字符后面加上该符合?)

{n}

重复n

{n,}

重复n次或者更多次

{n,m}

重复nm

 

定位字符

\b或者\B

匹配指定单词边界或非边界的字符

^

匹配字符串的开始

$

匹配字符串的结束

\G

上一次匹配的结尾

\A

字符串开头,类似^

\Z

字符串结尾或行尾

\z

字符串结尾,类似$

2.控制符

逻辑运算符

假设有XY两个表达式

XY

表示X与Y,匹配X紧跟着匹配Y

X|Y

表示XY,从左到右,匹配到其中一个满足条件就不会继续匹配了

 

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。