簡體   English   中英

使用正則表達式(python)從字符串中刪除#{word}

[英]Remove #{word} from a string using regex (python)

我對正則表達式不熟悉,因此獲得一些幫助將是很棒的。

我有一個字符串: string = "You get #{turns} guesses." 並且我想刪除#{turns}以便使string = "You get guesses."

我已經嘗試過:

string = re.sub(re.compile('#{.*?}'),"",string)

有什么建議么?

您的代碼可以工作,除了它不會刪除足夠的空格,並且如果只使用一次,則編譯是毫無用處的:

>>> string = "You get #{turns} guesses."
>>> string = re.sub(re.compile('#{.*?}'),"",string)
>>> string
'You get  guesses.'

因此,您可能希望先編譯一次正則表達式,然后再使用它,最好將其更改為-例如,刪除尾部空格:

rgx = re.compile('#{.*?}\s*')
string = rgx.sub('',string)

請注意\\s* ,它將與標記的任意數量的空格匹配,因此也將其刪除:

>>> string = "You get #{turns} guesses."
>>> rgx = re.compile('#{.*?}\s*')
>>> string = rgx.sub('',string)
>>> string
'You get guesses.'

如果在大括號( {} )之間是一個單詞 ,則最好使用\\w排除空格:

rgx = re.compile('#{\w*}\s*')

對於這個特定的問題,您也可以這樣做:

import re

string = "You get #{turns} guesses."
re.sub(r'#\S+ ', r'', string)

輸出:

'You get guesses.'

正則表達式:

'#\\S+ '匹配#並匹配多個非空格字符和一個空格。

暫無
暫無

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

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