簡體   English   中英

如何使用正則表達式僅替換括號內的內容?

[英]How to replace only the contents within brackets using regular expressions?

如何使用正則表達式僅替換括號內的內容?

String = "This is my string [123]"

我想用456代替123

Desired_String = "This is my string [456]"

我的嘗試:

regex = '.*\[(.*?)\].*'
re.sub(regex,'456',String)
>> 456

我不確定要使用什么正則表達式,以便它用456代替123。

如果稍微修改一下正則表達式和替換字符串,就會得到:

regex = '\[.*?\]'
re.sub(regex,'[456]',String)

您無需將整個字符串與.*匹配即可進行替換。

另外,這里並不完全需要它,但是最好提取正則表達式字符串:

regex = r'\[.*?\]'
        ^

另一種選擇是使用否定的類,這也會更快!

regex = r'[^\[\]]+(?=\])'
re.sub(regex,'456',String)

可能會有些混亂,但是[^\\[\\]]+匹配[]以外的任何字符。

regex101演示

另外,您可以使用先行斷言和先行斷言( 文檔 ):

>>> regex = r'(?<=\[).*?(?=\])'
>>> re.sub(regex, '456', 'This is my string [123]')
'This is my string [456]'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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