regex用法(如何使用正则表达式)

本文目录
如何使用正则表达式
QTP使用正则表达式有2种方式,一种是在“常量值选项”对话框或“参数选项”对话框的“值”框中输入字符串的正则表达式语法,可以定义正则表达式。选中“正则表达式”复选框,以指示QuickTest将该值作为正则表达式处理。
另一种是使用描述性编程,所有编程描述属性值都均自动作为正则表达式处理。注意:您可以只将正则表达式应用于字符串类型的值。
默认情况下,除了句点(.)、连字符(-)、星号(*)、插字号(^)、方括号([ ])、圆括号(())、货币符号($)、垂直线(|)、加号(+)、问号(?)和反斜杠(\)以外,QuickTest将正则表达式中的所有字符作为文字处理。当一个特殊字符前面带有反斜杠(\)时,QuickTest将其作为文字字符处理。
如果在“常量值选项”或“参数选项”对话框的“值”框中输入一个特殊字符,QuickTest会询问您是否要在每个特殊字符前面添加一个反斜杠(\)。如果单击“是”,则相应的特殊字符前面就会加上一个反斜杠(\),以指示QuickTest将该字符作为文字处理。如果单击“否”,QuickTest将该特殊字符作为正则表达式字符处理。
本节描述某些更常用的选项,可用于创建正则表达式:
• 使用反斜杠字符( \ )
• 匹配任意单个字符( . )
• 匹配列表中的任意单个字符( [xy] )
• 匹配不在列表中的任意单个字符( [^xy] )
• 匹配某个范围内的任意单个字符( [x-y] )
• 特定字符的零次或多次匹配( * )
• 特定字符的一次或多次匹配( + )
• 特定字符的零次或一次匹配( ? )
• 对正则表达式进行分组( ( ) )
• 匹配几个正则表达式中的一个表达式( | )
• 在一行的开始进行匹配( ^ )
• 在一行的结尾进行匹配( $ )
• 匹配包括下划线在内的任一字母数字字符( \w )
• 匹配任意非字母数字字符( \W )
• 组合正则表达式操作符
正则表达式的语法规则和标记
字符描述:
^符号匹配字符串的开头。例如:
^abc 与“abc xyz”匹配,而不与“xyz abc”匹配
$符号匹配字符串的结尾。例如:
abc$ 与“xyz abc”匹配,而不与“abc xyz”匹配。
注意:如果同时使用^符号和$符号,将进行精确匹配。例如:
^abc$ 只与“abc”匹配
*符号匹配0个或多个前面的字符。例如:
ab* 可以匹配“ab”、“abb”、“abbb”等
+符号匹配至少一个前面的字符。例如:
ab+ 可以匹配“abb”、“abbb”等,但不匹配“ab”。
?符号匹配0个或1个前面的字符。例如:
ab?c? 可以且只能匹配“abc”、“abbc”、“abcc”和“abbcc”
.符号匹配除换行符以外的任何字符。例如:
(.)+ 匹配除换行符以外的所有字符串
x|y匹配“x”或“y”。例如:
abc|xyz 可匹配“abc”或“xyz”,而“ab(c|x)yz”匹配“abcyz”和“abxyz”
{n}匹配恰好n次(n为非负整数)前面的字符。例如:
a{2} 可以匹配“aa“,但不匹配“a”
{n,}匹配至少n次(n为非负整数)前面的字符。例如:
a{3,} 匹配“aaa”、“aaaa”等,但不匹配“a”和“aa”。
注意:a{1,}等价于a+
a{0,}等价于a*
{m,n}匹配至少m个,至多n个前面的字符。例如:
a{1,3} 只匹配“a”、“aa”和“aaa”。
注意:a{0,1}等价于a?
[xyz]表示一个字符集,匹配括号中字符的其中之一。
新手boost:regex使用求教
boost是对STL的补充,regex是其中一个模块。各方法类别很多,本文记录常用方法。
引入头文件《boost/regex.hpp》
1. regex_match
regex reg(“\\d{3}“);
string str = “123“;
bool b = regex_match(str,reg);
2.regex_replace(string s, regex e, string t),把s中匹配了e的子串替换为t
regex reg(“(colo)(u)(r)“,boost::regex::icase|boost::regex::perl);
string s=“Colour,colour,color,colOurize“;
s=regex_replace(s,reg,“$1$3“);
t中的$n代表reg中的第n个括号里的内容,$3表示r,$1表示colo。上段代码表示把colour换成color,boost::regex::icase/boost::regex::perl是标志开关,表示忽略大小写。可以把需要的标志开关打开,不需要时默认关闭。
regex_replace不修改原字符串,而是生成一个新串返回。
3.erase_all_regex(string, regex),(boost::algorithm::erase_all_regex,in header 《boost/algorithm/string/regex.hpp》),删除满足regex的所有子串,它是在原串中直接修改
#include 《boost/algorithm/string/regex.hpp》
erase_all_regex(str, boost::regex(“[\n|\t|\r]“))
删除字符串str中的所有空格
4.split_regex(序列式容器, string, regex),(《boost/algorithm/string/regex.hpp》),分割符为regex格式,分割string,将结果存放在容器中
#include 《boost/algorithm/string/regex.hpp》
vector《string》 fields;
split_regex( fields, str, boost::regex(“[\\*|X]“));
如果str = “5*6“,fields中存放的是5和6。str不会被修改。
5.split(序列式容器,string,Predicate), (《boost/algorithm/string/split.hpp》)。
#include 《boost/algorithm/string/split.hpp》
#include 《boost/algorithm/string/classification.hpp》
vector《string》 result;
split(result, school_code, is_any_of(“;“));
is_any_of,用于判断school_code中是否包含“;“,以;分割school_code存放在result中,不修改原串。
正则表达式“或“的使用
正则表达式,又称规则表达式。是计算机科学的一个概念。
正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。
正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。
扩展资料
正则表达式的作用:
1、匹配
检查字符串是否符合正则表达式中的规则,有一次不匹配,则返回false。如:
String str=“abc“;
String reg=“[a-zA-Z]\\d?“;//次表达式表示字符串的第一位只能是字母,第二位只能是数字或没有boolean flag=str.matches(reg);//返回结果为true。
2、切割
所谓切割,即是按一定的规则将字符串分割成多个子字符串,如:
String str=“zhangsan,lishi,wangwu“。
String reg=“,“;//表示以逗号作为切割符。
String arr=str.split(reg);//返回结果为{“zhangsan”,“lisi“,“wangwu}。
3、替换
即将字符串中符合规则的字符替换成指定字符,如:
String str=“sfhjhfh136hjasdf73466247fsjha8437482jfjsfh746376“。
str.replaceAll(“\\d{3,}“,“#“);//表示将连续出现三个或三个以上的数字替换成“#”。
参考资料来源:百度百科-正则表达式

更多文章:
another time(another time和other time的区别)
2026年10月11日 05:00







