Robotframework:如何替换部分正则表达式匹配字符串

时间:2016-05-10 02:50:21

标签: regex robotframework

我在以下环境中使用机器人框架。

  • Python 2.7.6
  • robotframework 2.8.7
  • Ubuntu 14.04.3 LTS

如果匹配,我想删除“字符串中的字符”[0-9] *“pattern。
我的代码如下,但这不能用于未知参数。

*** Settings ***
Library    Collections
Library    json
Library    String

*** Variables ***
${TARGET_STRING}   {"host": "['192.168.1.2', '192.168.1.3']", "part": "['ZZZ1', 'ZZZ2']", "name": "XXXX", "kara": null, "type": "123", "id": "YYYY", "flg": false,"type2": "4567","type3": "4"}


*** Test Cases ***
My Test Case
    ${resp}    My Keyword    ${TARGET_STRING}

*** Keywords ***
My Keyword
    [Arguments]    ${string}
    ${resp}    Replace String Using Regexp    ${string}    "[0-9][0-9][0-9]"   123
    ${resp}    Replace String Using Regexp    ${resp}    "[0-9][0-9][0-9][0-9]"   4567
    ${resp}    Replace String Using Regexp    ${resp}    "[0-9]"   4
    Log To Console    ${resp}

输出

 {"host": "['192.168.1.2', '192.168.1.3']", "part": "['ZZZ1', 'ZZZ2']", "name": "XXXX", "kara": null, "type": 123, "id": "YYYY", "flg": false,"type2": 4567,"type3": 4}

(在这种情况下,我想改变
“type”:“123”到“type”:123,
“type2”:“4567”到“type2”:4567,
“type3”:“4”到“type3”:4而不是改变其他人)

我如何概括它?

1 个答案:

答案 0 :(得分:1)

您可以使用此正则表达式:

"[^"]+"\s*:\s*)"([0-9]+)"

Python的内容可能类似于:

p = re.compile(ur'("[^"]+"\s*:\s*)"([0-9]+)"', re.IGNORECASE | re.MULTILINE)

替换字符串为:$1$2。这将有效地重新组合这两个部分,而不包括数字周围的引号。