在名为 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/