专栏首页搜狗测试一起来了解一下正则表达式

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

一、 什么是正则表达式:

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

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

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

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

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

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

本文分享自微信公众号 - 搜狗测试(SogouQA),作者:五仁月饼

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-07-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 方便的回归测试——diffy平台

    前段时间,公司运维又双叒叕在迁移机房,带来的又是大量的回归测试,虽然负责的项目case还算健全,但是被迁移机房仍然存在大量的历史接口,有些甚至不知道是什么业务在...

    用户5521279
  • Appium—Native+H5混合APP的自动化

    小编所在项目的客户端是比较奇怪的一个APP,大部分页面Android和iOS的客户端只提供了webview的功能,都是由H5处理业务逻辑和用户交互。H5承担了和...

    用户5521279
  • [测试十年]搜狗测试五六年:批判性思维(二)

    思维谦逊:努力发现自己对未知知识忽视的程度。 现实生活中大多数人都认为自己知道其实并不了解的事情,这种自欺行为阻碍了我们批判地进行思考。为了克服这些错误的...

    用户5521279
  • 怼就完事了,总结几种验证码的解决方案

    截止到今天咸鱼已经写了很多期关于 Js 逆向的文章,不过这么多的文章都有一个共同点,都是关于加密参数或者密码加密的解析,很多读者在后台私信希望能够出一些关于滑动...

    咸鱼学Python
  • 传统行业也很冷:星美影院欠债4个亿,关停140家分店

    曾经疯狂跑马圈地,现在却被一道道围墙封锁,还因拖欠工资、租金等多起事件名誉扫地,股价也已然塌方。如今的星美影院,还能迎来春天吗?

    数据猿
  • 运行在Docker里的SpringBoot应用,如何查看记录在文件系统的日志

    ENTRYPOINT exec java $JAVA_OPTS -jar /app.jar

    Jerry Wang
  • 运行在Docker里的SpringBoot应用,如何查看记录在文件系统的日志

    FROM openjdk:8-jdk-alpine VOLUME /tmp VOLUME /log ADD target/prolikeService.j...

    Jerry Wang
  • [Leetcode][python]Find Smallest Letter Greater Than Target/寻找比目标字母大的最小字母

    给定一个有序的字符数组 letters 和一个字符 target,要求找出 letters 中大于 target 的最小字符。letters 字符数组是循环数组...

    后端技术漫谈
  • 小心你手机里的每一款APP,第三方SDK可能正在收集你的隐私

    你大概知道自己的手机里装了多少个APP,你也知道APP在收集你的个人隐私数据。但你或许不知道,除此之外,你的数据还可能同时被隐藏在APP里的第三方SDK收集。 ...

    BestSDK
  • 一篇文章学会miRNA-seq分析

    第一讲:文献选择与解读 前阵子逛BioStar论坛的时候看到了一个关于miRNA分析的问题,提问者从NCBI的SRA中下载文献提供的原始数据,然后处理的时候出现...

    生信技能树

扫码关注云+社区

领取腾讯云代金券