机器人框架正则表达式

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 将整个单元格视为表达式,因此只有当表达式实际以单引号开头和结尾时,您的表达式才会匹配。

该解决方案需要对您正在做的事情进行一些更改:

  1. 从表达式中删除单引号,除非您的实际数据也有单引号
  2. 不要调用 Regexp Escape
  3. do 转义模式中的管道,因为它们在正则表达式中被特殊处理
  4. 添加锚点(^$),除非您想匹配字符串中任意位置的模式
  5. 请记住 \ 在机器人文件中是特殊的,因此要在模式中获得反斜杠,您必须在定义模式时包含两个反斜杠

我认为以下内容符合您的要求:

*** 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}