RF之正则表达式匹配

Should Match Regexp是RF BuildIn关键字,入参为string, pattern, msg=None, values=True;前2个参数为必选,后2个参数为可选参数。基于Python re模块实现。

说明

(1)\是转义字符

(2)匹配字符串可包含特殊字符,但在字符串中午特殊含义,只是文本意思。

(3)匹配模式不是全字符匹配。若需要全字符匹配,在匹配模式字符首加^,字符尾加$

${ret}=Should Match Regexp123abc123abc
log${ret}  

执行结果

0170213 06:08:15.031 :  INFO : ${ret} = abc
20170213 06:08:15.031 :  INFO : abc

${ret}=Should Match Regexp123abc123^abc$
log${ret}  

执行结果

20170213 06:13:05.890 :  FAIL : '123abc123' does not match '^abc$'

${ret}=Should Match Regexpabc^abc$
log${ret}  

执行结果

20170213 06:15:33.515 :  INFO : ${ret} = abc
20170213 06:15:33.515 :  INFO : abc

(4)可选标识

i 不区分大小写

u依赖于Unicode

L本地化

返回值

成功

返回匹配成功的字符串,也可以返回匹配的子字符串。

实例如下:匹配字符串str1,值为1    MSV   3    V1.1 inservice;匹配模式为1\\s+(\\w+)\\s+(\\d+)\\s+(\\S+)\\s+(\\S+);

匹配成功的字符串赋给变量match,匹配成功的子字符串赋给变量cardtype、portnum、ver、status

执行结果,match、cardtype、portnum、ver、status的值如下:

失败

msg默认为None,可以给其赋值,当执行失败后会打印该提示。

${output1}set variableFO1o:11  
${ret}=Should Match Regexp${output1}(?i)foo:\\d+msg=匹配失败

执行结果
Starting test: Testproject2.Testsuite.ShouldMatchRegexp
20170213 06:35:32.296 :  INFO : ${output} = 123456ab
20170213 06:35:32.312 :  INFO : ${output1} = FO1o:11
20170213 06:35:32.312 :  INFO : ${outmatch} = 123456
20170213 06:35:32.312 :  FAIL : 匹配失败: 'FO1o:11' does not match '(?i)foo:\d+'
Ending test:   Testproject2.Testsuite.ShouldMatchRegexp

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Python中,可以使用字符串格式化或者正则表达式对象的方法来引用正则表达式中的变量。下面是两种常用的方法。 方法一:使用字符串格式化 ```python import re pattern = r'\d{3}-\d{3}-\d{4}' text = 'Phone numbers: 123-456-7890, 987-654-3210' # 使用字符串格式化的方式引用变量 pattern_with_variable = rf'{pattern}' result = re.search(pattern_with_variable, text) if result: print('匹配成功') else: print('未找到匹配') ``` 在上述示例中,我们使用了字符串格式化的方法,在原有的正则表达式模式 `pattern` 的前面加上了 `f` 前缀,并在字符串中使用 `{}` 代表变量 `pattern`。这样,就能够将变量 `pattern` 的值引用到正则表达式中。 方法二:使用正则表达式对象 ```python import re pattern = r'\d{3}-\d{3}-\d{4}' text = 'Phone numbers: 123-456-7890, 987-654-3210' # 使用正则表达式对象的方式引用变量 pattern_with_variable = re.compile(pattern) result = pattern_with_variable.search(text) if result: print('匹配成功') else: print('未找到匹配') ``` 在上述示例中,我们使用了 `re.compile()` 函数将正则表达式模式 `pattern` 编译成了一个正则表达式对象 `pattern_with_variable`。然后,我们可以使用该对象的方法进行匹配,如 `search()`。 这两种方法都能够在正则表达式中引用变量。选择哪种方法取决于你的个人偏好和具体的使用场景。 希望这个回答对你有所帮助。如有更多疑问,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值