簡體   English   中英

Python中的正則表達式替換

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM