2017-06-06 49 views
0

下面是我的文件「的test.txt」的一行:`re.search`不給整場比賽(Python)的

"","links":{"self":"https://1.1.1.10/abc/abc_config/v1/domain/1234-e0f2-11e3-8169-dfgd1234/devices/devicerecords/71a54444-442e-11e7-b2e0-ef8622226aec"},"name":"10.105.206.87"},{"id":"118e8d36-49ba-11e7-8c4e-fb1fe31bd90c","type":" 

我想從下面的行提取("name":"10.105.206.87"},{"id":"118e8d36-49ba-11e7-8c4e-fb1fe31bd90c","type")部分是我的代碼 -

f=open("test.txt","r") 
str1=f.read() 
str2=str1.split("Device") 
for string in str2: 
    if "name" in string: 
     reg='\"name.+,\"typ' 
     match=re.search(reg,string) 
     print (match) 

它匹配的預期產量的一半:

<_sre.SRE_Match object; span=(164, 237), match='"name":"10.105.206.87"},{"id":"118e8d36-49ba-11e7> 

我想打印整個字符串:

"name":"10.105.206.87"},{"id":"118e8d36-49ba-11e7-8c4e-fb1fe31bd90c","type" 

讓我知道,如果我通過了錯誤的正則表達式。

+0

看起來像JSON。改用'json'模塊。 –

回答

0

該模式是正確的。您正在嘗試打印re.search的結果。儘量只拉下面的匹配文字。

reg='\"name.+,\"type\"' 
match=re.search(reg,string) 
print (match.group()) 

BTW,我已經修改了模式匹配一​​點點,直到"type"