我使用這個正則表達式與1985年替換字符串內的年形式'85的所有ocurrencesPython的替代今年提到像'85與1985年
import re
re.sub("'(\d\d)", "19\1", "Today '45")
但結果我得到的回覆是遠預計:
'Today 19\x01'
我期望得到Today 1945
。我想知道什麼是正確的做法。任何幫助非常感謝。
我使用這個正則表達式與1985年替換字符串內的年形式'85的所有ocurrencesPython的替代今年提到像'85與1985年
import re
re.sub("'(\d\d)", "19\1", "Today '45")
但結果我得到的回覆是遠預計:
'Today 19\x01'
我期望得到Today 1945
。我想知道什麼是正確的做法。任何幫助非常感謝。
使字符串原始字符串
>>> re.sub(r"'(\d\d)", r"19\1", "Today '45")
'Today 1945'
或者爲Avinash建議,使用單詞邊界\b
。他們是更好的,因爲他們會幫助你忽略不是兩位數字,像3456
>>> re.sub(r"'(\d{2})\b", r"19\1", "Today '45, '3456")
"Today 1945, '3456"
@AvinashRaj Thanks ...編輯 – 2015-02-05 16:24:34
@AvinashRaj:但是這個撇號不應該在後視斷言中,否則它不會被刪除。 – 2015-02-05 16:26:01
哦,我沒有注意到..''(?= \ d {2} \ b)或''(\ d {2})\ b' – 2015-02-05 16:26:32
參考該組的\g<1>
代替\1
:
In [21]: re.sub("'(\d\d)", "19\g<1>", "Today '45")
Out[21]: 'Today 1945'
或使用原始字符串:
In [22]: re.sub("'(\d\d)", r"19\1", "Today '45")
Out[22]: 'Today 1945'
你的代碼不工作,因爲Python interprets \1
as a character.
使用'r'作爲字符串原始字符串:'re.sub(r「'(\ d \ d)」,r「19 \ 1」,「Today '45」)' – 2015-02-05 16:17:10