[英]Regular expression substitution in Python
我有一個字符串
line = "haha (as jfeoiwf) avsrv arv (as qwefo) afneoifew"
從這里我想刪除使用一些正則表達式的"(as...)"
所有實例。 我希望輸出看起來像
line = "haha avsrv arv afneoifew"
我試過了:
line = re.sub(r'\(+as .*\)','',line)
但這會產生:
line = "haha afneoifew"
要獲得非貪婪的行為 ,你必須使用*?
而不是*
,即re.sub(r'\\(+as .*?\\) ','',line)
。 要獲得所需的字符串,還必須添加一個空格,即re.sub(r'\\(+as .*?\\) ','',line)
。
問題是你的正則表達式匹配整個組:( (as jfeoiwf) avsrv arv (as qwefo)
,因此你的結果。
您可以使用 :
>>> import re
>>> line = "haha (as jfeoiwf) avsrv arv (as qwefo) afneoifew"
>>> line = re.sub(r'\(+as [a-zA-Z]*\)','',line)
>>> line
'haha avsrv arv afneoifew'
希望它會有所幫助。
你非常接近。 你需要使用懶惰的量詞'?' 之后。*。 默認情況下,它會嘗試捕獲它可能的最大組。 使用惰性量詞,它實際上會嘗試匹配最小的可能組。
line = re.sub(r'\(+as .*?\) ','',line)
嘗試:
re.sub(u".\(as \w+\).", ' ',line)
嘗試:
re.sub(r'\(as[^\)]*\)', '', line)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.