0

我试图找到一种方法让机器人框架在日志文件中的已知字符串之间抓取文本。我想用它来获取变量(如 IP 地址),以通过我的测试计划传递它们。

示例日志:(注意不同的时间戳,我无法控制这些,开发人员似乎出于某种原因喜欢更改它们。)

[2014-10-11T22:34:00.11] TCPConnect - 在端口 8030 上连接到 192.168.21.139。

[2014-10-11 22:34:00.11] TCPConnect - 在端口 9718 上连接到 devbox01。

[2014-10-11] [22:34:00.11] TCPConnect - 在端口 8712 上连接到 devbox01.here.local.net。

如果我使用关键字“获取匹配正则表达式的行”和正则表达式:

(?<=.*Connecting to )(.*?)(?= on port .*)

我得到:

错误:后视需要固定宽度的模式

我希望在“连接到”和“端口”之间获得 IP 地址、主机名和其他任何内容,但事实并非如此。我知道这与 python 2.6 有关,但是显然 2.7 将包含此功能;我希望在当前版本中解决这个问题。

有人有想法么?

4

1 回答 1

1

我不认为你需要在这里使用look-behind。这应该与给定的行匹配:

| | ${lines} | Get lines matching regexp | ${data} | .*Connecting to .* on port.*

请注意,这将返回匹配的整行——它与模式无关,它只是该关键字的工作方式。即使您添加捕获或非捕获组,您也会得到匹配的整行。如果您只想获取 IP 地址,则必须对返回的行进行一些额外的解析。

于 2014-11-05T23:40:32.760 回答