机器人框架正则表达式
Robot Framework Regexp
我有以下格式的数据
name | height | hex assigned
[alphanumeric and spaces] | [numeric] cm| [hex]:[hex]
20 char | 5 char | 1 char: 1 char
我要做的是匹配正则表达式
${escaped}= Regexp Escape '[A-Za-z0-9_\s] | [0-9]+ cm| [0-9a-f]:[0-9a-f]'
Should Match Regexp ${text} ${escaped}
虽然文本是正确的,但测试一直失败。
如果有人能指出我做错了什么,我将不胜感激。
您可以使用以下内容:
^[A-Za-z0-9_\s]{1,20}\s+\|\s+[0-9]{5} cm\|\s+[0-9a-f]:[0-9a-f]$
见DEMO
如果您对正则表达式进行转义,实际上就是将表达式转换为固定字符串。您还遇到了您的模式以单引号开头和结尾的问题。由于 robot 将整个单元格视为表达式,因此只有当表达式实际以单引号开头和结尾时,您的表达式才会匹配。
该解决方案需要对您正在做的事情进行一些更改:
- 从表达式中删除单引号,除非您的实际数据也有单引号
- 不要调用 Regexp Escape
- do 转义模式中的管道,因为它们在正则表达式中被特殊处理
- 添加锚点(
^
和 $
),除非您想匹配字符串中任意位置的模式
- 请记住
\
在机器人文件中是特殊的,因此要在模式中获得反斜杠,您必须在定义模式时包含两个反斜杠
我认为以下内容符合您的要求:
*** Variables ***
${pattern} ^[A-Z0-9_\s]{1,20} \| [0-9]+ cm\| [0-9A-Fa-f]:[0-9A-Fa-f]$
*** Test cases ***
Example
Should Match Regexp 12345678901234567890 | 1 cm| 3:5 ${pattern}
我有以下格式的数据
name | height | hex assigned
[alphanumeric and spaces] | [numeric] cm| [hex]:[hex]
20 char | 5 char | 1 char: 1 char
我要做的是匹配正则表达式
${escaped}= Regexp Escape '[A-Za-z0-9_\s] | [0-9]+ cm| [0-9a-f]:[0-9a-f]'
Should Match Regexp ${text} ${escaped}
虽然文本是正确的,但测试一直失败。
如果有人能指出我做错了什么,我将不胜感激。
您可以使用以下内容:
^[A-Za-z0-9_\s]{1,20}\s+\|\s+[0-9]{5} cm\|\s+[0-9a-f]:[0-9a-f]$
见DEMO
如果您对正则表达式进行转义,实际上就是将表达式转换为固定字符串。您还遇到了您的模式以单引号开头和结尾的问题。由于 robot 将整个单元格视为表达式,因此只有当表达式实际以单引号开头和结尾时,您的表达式才会匹配。
该解决方案需要对您正在做的事情进行一些更改:
- 从表达式中删除单引号,除非您的实际数据也有单引号
- 不要调用 Regexp Escape
- do 转义模式中的管道,因为它们在正则表达式中被特殊处理
- 添加锚点(
^
和$
),除非您想匹配字符串中任意位置的模式 - 请记住
\
在机器人文件中是特殊的,因此要在模式中获得反斜杠,您必须在定义模式时包含两个反斜杠
我认为以下内容符合您的要求:
*** Variables ***
${pattern} ^[A-Z0-9_\s]{1,20} \| [0-9]+ cm\| [0-9A-Fa-f]:[0-9A-Fa-f]$
*** Test cases ***
Example
Should Match Regexp 12345678901234567890 | 1 cm| 3:5 ${pattern}