【问题标题】:Robot Framework - "Lookaround" regex机器人框架 - “环视”正则表达式
【发布时间】:2015-01-02 07:56:04
【问题描述】:

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

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

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

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

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

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

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

我明白了:

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

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

有人有什么想法吗?

【问题讨论】:

    标签: robotframework lookbehind lookaround


    【解决方案1】:

    我认为您不需要在这里使用后视。这应该与给定的行匹配:

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

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

    【讨论】:

    • 是的,Builtin 或 String 库中没有关键字可以满足需要。 Split String 或 python 用户关键字将是最佳选择。
    猜你喜欢
    • 2017-06-06
    • 1970-01-01
    • 2020-05-12
    • 1970-01-01
    • 2018-08-09
    • 2019-03-16
    • 2019-10-11
    • 1970-01-01
    相关资源
    最近更新 更多