2016-05-10 84 views
1

我在以下環境中使用機器人框架。Robotframework:如何替換部分正則表達式匹配字符串

  • 的Python 2.7.6
  • robotframework 2.8.7
  • 的Ubuntu 14.04.3 LTS

我想刪除「從字符串的人物造型是否匹配 」[0-9] *「 模式。
我的代碼是follwing但這不能正常工作的未知參數。

*** 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} 

(在這種情況下,我想改變
「類型」: 「123」 到 「類型」:123,
「2型」: 「4567」 到 「2型」:4567,
「type3」:「4」到「type3」:4並且不改變其他)

我該如何概括它呢?

回答

1

你可以使用這個表達式:

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

Python的那些可能看起來像:

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

替換字符串將是:$1$2。這將有效地重新組合這兩個部分,而不在數字附近引用引號。