我試圖抓住那被包圍的字符串‘與‘_’蟒蛇應用re.sub()用對或字符
例如,「並替換第一!’!。 STR( !!!!測試)條() - > STR(_測試)條()
這裏是我的代碼至今:
print re.sub(r'!.*?!','!_', 'str(!test!).strip()')
有了這個代碼,我搶了太多,結果是:(+ _ +)。 STR條()
如何在零上第一有什麼想法「!」。或者,有沒有辦法在「!!」中抓住字符串?然後添加「!_」+「!」那根弦?
我試圖抓住那被包圍的字符串‘與‘_’蟒蛇應用re.sub()用對或字符
例如,「並替換第一!’!。 STR( !!!!測試)條() - > STR(_測試)條()
這裏是我的代碼至今:
print re.sub(r'!.*?!','!_', 'str(!test!).strip()')
有了這個代碼,我搶了太多,結果是:(+ _ +)。 STR條()
如何在零上第一有什麼想法「!」。或者,有沒有辦法在「!!」中抓住字符串?然後添加「!_」+「!」那根弦?
您需要用圓括號將「word」的後半部分分組,並在替代字符串\g<1>
中使用該組。
re.sub(r'!(.*?!)', '!_\g<1>', 'str(!test!).strip()')
print re.sub(r'!(?=.*?!)', '!_', 'str(!test!).strip()')
使用積極的向前看。
print re.sub(r'!(.*?)!', r'!_\1!', 'str(!test!).strip()')
使用反向引用。
排除來自之間的字符!
S:!使用[^!]
代替.
然後,捕捉你想保持與()
的RE的一部分,並且在替換字符串,用\1
來再次插入它。
print re.sub(r'!([^!]*!)', r'!_\1', 'str(!test!).strip()')
從技術上講,CharString的第一個解決方案就是你想要的解決方案。我忘記了python的前瞻性。這將是更有效率和可以理解的。 – mybluevan