2016-10-20 22 views
0

林本正則表達式strugling更換的變化模式 我有一個簡單的字符串是這樣的:查找和延長圖案

'<SQL>GEOMETRYTYPE = 10 AND RPAREA = 1112</SQL>' 

其數量正在改變,我想更換

import re 
text1 = '<SQL>GEOMETRYTYPE = 10 AND RPAREA = 1112</SQL>' 
re.sub('<SQL>GEOMETRYTYPE = 10 RPAREA = '\d+,text1) 

與此:

'<SQL>GEOMETRYTYPE = 10 AND RPAREA = 1112 AND NAME EXSISTS NO </SQL>' 

我想:

import re 
text1 = '<SQL>GEOMETRYTYPE = 10 AND RPAREA = 1112</SQL>' 
re.sub('<SQL>GEOMETRYTYPE = 10 RPAREA = '\d+,text1) 

RPAREA中有數千個不同的數字,因此搜索和替換將永遠佔用。

任何幫助?

回答

0

你可以用這個表達式做到這一點:

<SQL>GEOMETRYTYPE\s*=\s*(\d+) AND RPAREA\s*=\s*(\d+) 

其中使用捕捉組搶兩個數值,然後可以在新的字符串re.sub使用:

sql_str = re.sub(
    r"<SQL>GEOMETRYTYPE\s*=\s*(\d+) AND RPAREA\s*=\s*(\d+)", 
    "<SQL>GEOMETRYTYPE = \\1 AND RPAREA = \\2 AND NAME EXISTS NO", 
    sql_str 
)