前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一起来了解一下正则表达式

一起来了解一下正则表达式

作者头像
用户5521279
发布2019-07-23 10:43:24
3550
发布2019-07-23 10:43:24
举报
文章被收录于专栏:搜狗测试搜狗测试

一、 什么是正则表达式:

在维基百科中,正则表达式被形容是“使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些匹配某个模式的文本。”

二、 为什么使用正则表达式:

在接触到这一概念时,我们可能会觉得它神秘莫测,同时又比较难以理解。首先我们了解了正则表达式(下文简称为正则)是一个字符串,它由一系列我们常用或常见的文字、符号等组合而成,在我们需要检索特定文本时,通过使用正则,往往能够提升效率,避免做出大量重复检查、匹配的劳动。

三、 如何使用正则表达式:

接下来,我们完全可以将正则理解为一门语言,它有属于自己的字符、字符含义、字符组合等,我们可以通过一些实例来具体看一下,究竟什么情况下,这门“神奇”的语言能够帮到我们。

1. 我想找一个已经明确的对象

这个时候我们可以直接写出要找的字符,比如我要找Green;

待查找序列

例句

匹配结果

Green

The Greens have Mr. Green, Mrs. Green and Tom Green.

The Greens have Mr. Green, Mrs. Green and Tom Green.

2. 如果我需要查找Green这个单词,请注意,这和前面的匹配条件是有细微差别的

待查找序列

例句

匹配结果

\bGreen\b

The Greens have Mr. Green, Mrs. Green and Tom Green.

The Greens have Mr. Green, Mrs. Green and Tom Green.

这里的\b标记单词的边界(实际上是一个位置),在进行主观判断时,建议你通过以下条件查看一个序列是否匹配——

(1) \b本身是不具有长度的,所到达的这个位置是单词边界,就算是匹配成功;

(2) \b的一侧是构成单词的字符,另一侧不能是英文字母、数字、下划线,所以Greens右侧出现了s,就不符合筛选条件了;

3. 现在我们需要查找一个T后面跟随2位长度字符的序列

待查找序列

例句

匹配结果

T\w{2}

The Greens have Mr. Green, Mrs. Green and Tom Green.

The Greens have Mr. Green, Mrs. Green and Tom Green.

在这里,The和Tom我们都找到了,其实\w代表任意一个字母、数字或者下划线,而{2}表示将前面的一个单元重复2次,也就是说T1a,T23,T4_,T_6,T__,都是可以通过这个正则筛选出来的,Tony当中的Ton也符合这个正则;

4. 通过修改上面这条正则,我们也可以直接筛选到Tony

待查找序列

例句

匹配结果

T\w{2,3}

The Greens have Mr. Green, Mrs. Green and Tony Green.

The Greens have Mr. Green, Mrs. Green and Tony Green.

变化就在{2,3}当中,这里{2,3}表示将前面的一个单元重复最少2次,最多3次,如果你还想筛选Tommy,可以继续修改这个正则为T\w{2,4}

5. 你可能已经发现,在使用\w时,我们不能只筛选英文字母或者说准确到只筛选小写英文字母

待查找序列

例句

匹配结果

T[a-z]{2,3}

The Greens have Mr. Green, Mrs. Green and Tony Green.

The Greens have Mr. Green, Mrs. Green and Tony Green.

[a-z]表示从小写字母a到小写字母z这个范围,匹配到任意一个字母就算成功,那么我们使用上面这条正则,就可以筛选到The,Tom,Tony,类似,如果需要筛选大写字母序列,可以使用[A-Z],比如TOM,TONY,就可以使用T[A-Z]{2,3}筛选出来。

四、 在哪里使用正则表达式:

首先,多数的编程语言都能够支持正则,比如python,Java等;

平常在使用Fiddler、Charles等代理工具时,我们也可以通过正则来简化重定向,比如[t|T]1.abc.com可以定位到t1.abc.com或T1.abc.com,其中|表示或。

现在简单总结一下,我们可以通过使用正则来识别全部符合要求的文本,同时,也忽略掉那些不符合要求的文本。在构建正则时,我们需要使用到基本字符和特殊字符。基本字符主要包括英文字母、数字(准确说应该是十进制数字)、下划线、空格等等,我们可以简单理解为,这些字符在一条正则中,表示的就是它本身的意义,没有发生什么变化。比如我们上面已经应用过的,Green表示的就是大写字母G,小写字母r,e,e,n按照顺序组成的一个序列,而在{2,3}当中,2表示的就是数字2。当然还有一些特殊字符,比如[a-z]中,[]就不是简单的括号,而表示在它当中列举的字符里选择一个,当然-也不仅仅是连字符了,而是代表了一个范围。类似还有像\b\w\n(一个换行符),\s(一个空格),.(除换行符以外的其他任意一个字符),^(一行开始的位置),$(一行结束的位置)。

推荐大家一个比较实用的正则表达式测试网站:

https://tool.chinaz.com/regex,

在这里可以判断你写的正则表达式是否符合你的预期,对符合筛选条件的字符串标注颜色等。

参考文献:

(1) https://zh.wikipedia.org/wiki/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F

(2) 《精通正则表达式》(第3版),电子工业出版社

(3) https://blog.csdn.net/lxcnn/article/details/4355364

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 搜狗测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档