如何在Robot Framework中使用正则表达式获取特定模式?

时间:2017-05-18 06:40:58

标签: regex robotframework

我有一个场景,我需要使用正则表达式从字符串中获取特定模式。

字符串如下所示:

${text} = Slot 0   l  5  3  24+6 
          Slot 1   l  3 16  10
          Slot 3   l  4  3  32
          Slot 8   l  2  3 
          Slot 9   l  1  3

在这里,我只需要获取

Slot 0 Slot 1 Slot 3 Slot 8 Slot 9

我该怎么做?

我尝试过使用关键字' Replace String Using Regexp'和#39;获得Regexp匹配'对于相同的。

${text}=  String.Replace String Using Regexp  ${response}   [^Slot\\s+\\d], ${EMPTY} 

结果是:

${text} = Slot 0 l 5 3 24+6 Slot 1 l 3 16 10 Slot 3 l 4 3 32 Slot 8 l 2 3 Slot 9 l 1 3 –

并且Get Regexp Matches给出了以下结果:

${matches}=   String.Get Regexp Matches  ${response}    [Slot\\s+\\d] 

结果:

${matches}=   ['S', 'l', 'o', 't', ' ', '0', ' ', ' ', ' ', 'l', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '5', ' ', '3', ' ', ' ', '2', '4', '+', '6', '\r', '\n', 'S', 'l', 'o', 't', ' ', '1', ' ', ' ', ' ', 'l', ' ', ' ... –

1 个答案:

答案 0 :(得分:2)

解决方法是删除' Get Regexp Matches' 关键字中用于正则表达式的方括号。

即,使用 Slot \ s + \ d + 而不是 [Slot \ s + \ d +]

这是因为[]匹配来自的单个字符list和我的要求是获取整个子字符串。

谢谢@Todor