[英]Grouping lookbehind pattern along with matching regex search pattern to substitute as a whole
我必須搜索並替換以下條件的模式:如果在一行中找到字符串“ y = 2”,並且如果在字符串之前或不以“ x =”開頭,則替換為匹配的字符串“ y = 2” ,其中“ x = 1 y = 2”。 我正在嘗試以下
line="hello x=7 y=2"
m = re.search(r"((?<=x=\d\s)|(?<!x=\d\s))y=2", line)
if m:
s = "x=1 " + m.group(0)
line = re.sub(m.group(0), s, line)
print line
我得到的輸出為hello x = 7 x = 1 y = 2 ,與預期輸出不同: hello x = 1 y = 2
如何獲取包括后向表達式在內的整個模式作為匹配字符串? 這將解決我的問題。
m.group(0) always print y=1, and m.group(1) prints nothing
我希望它具有整個字符串“ x = 7 y = 1”,以使替換正常工作
因此,基本上,如果一行的y=2
替換或位於前面的x=
定義之前? 如果是這樣,我建議您更改算法以做到這一點:
y=2
為true,則 x=[0-9]
為true,則替換為x=1
; y=2
替換為x=1 y=2
(為進行優化,您可以存儲和使用y=2
的初始搜索結果。) 我認為您不需要后向模式來執行此操作。 所有工作都是將y=2
或x=\\dy=2
替換為x=1 y=2
,對嗎?
line="hello x=7 y=2"
re.sub(r'(x=\d\s)?y=2', 'x=1 y=2', line)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.