首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Robot Framework Regexp

Robot Framework Regexp
EN

Stack Overflow用户
提问于 2015-05-26 23:08:54
回答 2查看 11.3K关注 0票数 1

我有以下格式的数据

代码语言:javascript
运行
复制
name                      | height      | hex assigned
[alphanumeric and spaces] | [numeric] cm| [hex]:[hex]
20 char                   | 5 char      | 1 char: 1 char

我想要做的是,匹配regexp

代码语言:javascript
运行
复制
${escaped}=  Regexp Escape  '[A-Za-z0-9_\s] | [0-9]+ cm| [0-9a-f]:[0-9a-f]'
Should Match Regexp  ${text}  ${escaped}

虽然文本是正确的,但测试总是失败。

如果有人能指出我做错了什么,我将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-27 00:13:31

如果对正则表达式进行转义,则实质上是将表达式转换为固定字符串。您还有一个问题,即您的模式以单引号开始和结束。由于robot将整个单元格视为表达式,因此只有以单引号开头和结尾的表达式才会匹配。

该解决方案需要对您所做的操作进行一些更改:

  1. 删除表达式中的单引号,除非实际数据也包含单引号,否则不要调用Regexp escape
  2. 转义模式中的管道,因为在常规string
  3. Remember锚点(^$)中对这些管道进行了特殊处理,除非您希望匹配robot文件中\特殊的模式,因此要在模式中使用反斜杠,必须在定义模式时包括两个反斜杠<代码>H213<代码>G214

我认为下面的代码可以满足您的需求:

代码语言:javascript
运行
复制
*** 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}
票数 3
EN

Stack Overflow用户

发布于 2015-05-26 23:14:02

您可以使用以下内容:

代码语言:javascript
运行
复制
^[A-Za-z0-9_\s]{1,20}\s+\|\s+[0-9]{5} cm\|\s+[0-9a-f]:[0-9a-f]$

请参阅DEMO

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30462386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档