软件测试——正则表达式总结

本文是对正则表达式的总结,介绍了其作用、入门知识,包括特殊字符的意义和用法,并举例说明如何进行匹配。此外,还涉及了正则表达式的反义、后向引用、断言、贪婪与懒惰等高级概念,是学习正则表达式的好资料。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写这篇的初衷是在学习jmeter关联,发现可以通过正则表达式对获取的数据作为参数放入下一个请求中,那么就要对正则表达式有所了解,我感觉正则表达式一般的能看懂,能写一些简单的应该可以,后面会写一篇关于关联的案例,加油!是在网上找到的30分钟搞懂正则表达式w3cschool,算是一个自己的理解总结吧

1、正则表达式作用:其实就是记录文本规则的代码,把文本中匹配的数据查找出来

2、入门:

\b:表示单词的开头或结尾,只匹配一个位置

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

*:连续重复任意匹配,重复>=0次

+: 重复>=1次

?:重复0或1次

{n}:重复n次

{n,}:重复大于n次

{n,m}:重复n到m次

.*:表示任意数量不包含换行的字符

-:普通连字符

\d: 匹配数字

\s:匹配任意空白符,包括空格、Tab、换行符等

\d+: 匹配1个或更多连续的数字

\w: 匹配字母或数字或下划线

^: 匹配字符串的开始

$: 匹配字符串的结束

\: 字符转义,用来防止有歧义的标点符号被转义

|:分支,相当于或,要注意个分支的顺序

普通查找所有包含‘hi’的字符:表达式 hi -->him,history

精确查找hi的字符:表达式\bhi\b-->hi

查找hi开头,yy结尾的字符:表达式:\bhi\b.*\byy\b

0\d{2}-\d{8}:0开头2个数字-8个数字的字符串

\ba\w*\b:匹配以a开头的单词 如 adfdf apple 结果:apple

\b\w{6}\b:匹配6个字符的单词

整个字符串是5位到12位数字:^\d{5,12}$

字符串包含5位到12位数字:\d{5,12}

c:\\Windows 匹配 c:\Windows

hello\d+:匹配hello后加1个或多个数字

^\w+:匹配一行第一个单词

[asdfs]:匹配任一字母

\(?0\d{2}[) -]?\d{8}:解释 ‘\(’转义,‘?’出现0次或1次,然后0,2个数字,‘[) -]?’空格)-一次或不出现,最后8个数字 可以匹配的有:(012)88888888,011-78787878等

0\d{2}-d{8}|0\d{3}-\d{7}:包含0开头2个数字-8个数字或0开头3个数字-7个数字的字符如:010-23423434,0513-23423421

\(0\d{2}\)[- ]?\d{8}|0\d{2}[- ]?\d{8}:(0,2个数字),-或空格出现1次或0次,8个数字或02个数字,-或空格存在一次或0次,8个数字

\d{5}-\d{4}|\d{5} 5个数字-4个数字或者5个数字,若为\d{5}|\d{5}-\d{4} 表示:只匹配5个数字,不会考虑后面4位情况

二、反义

反义其实就是反过来匹配,一般都是大写

\W 匹配不是任意字母、数字、下划线、汉字等字符

\S 匹配任意不是空白的字符

\D 匹配不是数字的字符

\B 匹配不是字母开头或结束的位置

[^x] 匹配除x以外的任意字符

\S+ 匹配不是空白字符的字符串

<a[^>]+> 匹配<a+>,尖括号以a开头的字符串

三、后向引用、断言

  \b(\w+)\b\s+\1\b 匹配重复的单词 解释:大于1个的字母或数字,放入编号为1匹配的分组中,然后是1个或几个空白符,然后是前面捕获的内容

(?=exp)零宽度正预测先行断言,断言自身出现位置后面能匹配表达式exp

  \b\w+(?=ing\b) 匹配以ing结尾的单词的前面部分 如:i'm singing -->sing

  (?<=exp) 零宽度正回顾后发断言,其实就是匹配后部分的字符 如:

(?<=\bre)\w+\b 匹配以re开头的单词后半部分 如 reading a book ->ading

  (?<=\s)\d+(?=\s) 匹配以空白符间隔的数字  前后都匹配空白符,中间为数字

  (?!exp)零宽度负预测先行断言 断言此位置后面不匹配exp

如:\d{3}(?!\d) 匹配三位数字,且后面不能是数字

  \b((?!abc)\w)+\b 匹配不包含连续字符串abc的单词

(?<!exp)零宽度负回顾后发断言 断言此位置前面不匹配exp

如:(?<![a-z])\d{7} 匹配前面不是小写字母的七位数字

(?<=<(\w+)>).*(?=<\/\1)  匹配不包含html标签里面的内容 解释:(?<=<(\w+)>)匹配<字符>  .*任意字符串 匹配</字符>

 四、贪婪与懒惰 

    a.*b 匹配最长以a开始,b结束的字符串

    a.*?b 匹配最短,以a开始,b结束的字符串, 若为aabab-->aab,ab 原因:最先开始匹配的有最高优先权

 五、补充

  (?(exp)yes|no) 若匹配成功则使用yes的表达式,若不匹配成功则使用no的表达式 相当于java中的三目运算符

  (?(name)yes|no) 如果命名为name的组捕获到了内容,使用yes作为表达式;否则使用no

  (?(name)yes) 如果命名为name的组捕获到了内容,使用yes作为表达式;否则使用空表达式作为no

Regex Testor Version 1.02 Copyright (c) 2013 Fiery Red - flameleo 我们在使用正则表达式( regex: regular expression )的过程中,经常发现正则表达式的语法很令人头疼,即使对经常使用它的人来说也是如此。对于刚接触正则表达式的人来说多练习,多使用,才能熟练掌握正则表达式。 由于难于读写,容易出错,且需要反复练习。所以找一种工具对正则表达式对我们脑中构思的regex进行测试是很有必要的。 1.特点 a.适合初学者,在不断测试用学习如何使用正则表达式。 b.可以分组保存,测试中用到的正则表达式。 c.本工具使用最常见的regex。以下是简单示例: a|b Matches a or b gr(a|e)y Matches a or e . Matches any single character [abc] Matches a single character a, b or c [^abc] Matches any single character except a, b or c [a-z] Matches a single charactor in the range a to z [a-zA-Z] Matches a single charactor in the range a to z or A to Z ^ Matches the start of the filename $ Matches the end of the filename * Matches the preceding element zero or more times ? Matches the preceding element zero or one times + Matches the preceding element one or more times {x} Matches the preceding element x times {x,} Matches the preceding element x or more times {x,y} Matches the preceding element between x and y times 值得一提的是()代表子匹配,有些环境中gr(a|e)y Matches gray or grey 还支持许多常见的转义字符 \b,\B,\c,\d,\D,\f,\n,\r,\s,\S,\t,\v,\w,\W,\x,\u 具体详见附件 Regular Expression Syntax1.html 2.功能介绍 a.界面上显示提供regex输入框和原文本框,点击[模式匹配]按钮后,会在右侧输出结果,包括匹配字符串列表和文本。 b.对于测试中一些有用的regex,点击[insert]按钮添加到模式列表,以备日后使用。你可以位该regex添加描述分组,该信息会在程序结束后保存在CustomPatternInfo.ini文件中。 c.可以参考Readme_1.jpq和Readme_2.jpq图片介绍。 3.有待改进 a.界面布局和控件友好型和交互性。 b.界面功能提供regex语法支持。(暂时可以通过导入附件RegexSystax.ini到CustomPatternInfo.ini中) 4.意见反馈 a.请将您的宝贵意见反馈到 FieryRed_2012@163.com 附件: Readme.txt Readme_1.jpg Readme_2.jpg Regular Expression Syntax.html RegexSystax.ini
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值