regex - 如何在机器人框架中使用正则表达式选择子字符串

标签 regex string substring robotframework

在名为 String 的 Robot Framework 库中,有几个关键字允许我们使用正则表达式来操作字符串,但这些操作似乎不包括从字符串中选择子字符串。

澄清一下,我的意图是有一个价格,即 € 1234,00我只想从中选择 4 个主要数字,这意味着我只剩下 1234 (我将转换为 int 以用于验证计算)。我有一个正则表达式可以让我这样做,如下所示:
(\d+)[\.\,]
如果我使用 Remove String Using Regexp有了这个正则表达式,我将留下我试图删除的内容。如果我使用 Get Lines Matching Regexp ,我会得到整行,而不仅仅是我想要的结果,如果我使用 Get Regexp Matches我会得到正确的结果,除了它会在一个列表中,然后我将不得不再次操作它,所以这似乎不是最佳的。

我是否只是错过了允许我这样做的关键字,还是我被迫编写自己的自定义关键字来让我这样做?我有点惊讶这个功能似乎不可用,因为这是我想到使用带有字符串的正则表达式时会想到的第一个用例......

最佳答案

您可以使用 Evaluate关键字来运行一些python代码。

例如:

| Using 'Evaluate' to find a pattern in a string
| | ${string}= | set variable | € 1234,00
| | ${result}= | evaluate | re.search(r'\\d+', '''${string}''').group(0) | re
| | should be equal as strings | ${result} | 1234

从机器人框架 2.9 开始,有一个名为 Get regexp matches 的关键字。 ,它返回所有匹配项的列表。

例如:
| Using 'Get regexp matches' to find a pattern in a string
| | ${string}= | set variable | € 1234,00
| | ${matches}= | get regexp matches | ${string} | \\d+
| | should be equal as strings | ${matches[0]} | 1234

关于regex - 如何在机器人框架中使用正则表达式选择子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33433813/

相关文章:

java - 为什么在定长的正则表达式后方这种负向查找不起作用?

java - 计算 Java 中 String 中零之间的边界

php - 如何在运行之前检测异常查询(注入(inject)可疑)?

php - substr() 没有按预期工作

java - 如何从特定结构的txt文件中获取试题?

javascript - 如何返回字符串中子串的出现频率?

java - 带反斜杠转义的字符串的正则表达式

c# - 正则表达式以字符集开始和结束,但中间有不同的字符集

c - 直接内存访问的段错误

javascript - 交叉文本以找到常用词