我对正则表达式并不熟悉,能得到一些帮助会很棒。
我有一个字符串:string = "You get #{turns} guesses."
我想删除#{turns}
以获得string = "You get guesses."
我试过了:
string = re.sub(re.compile('#{.*?}'),"",string)
有什么建议吗?
答案 0 :(得分:1)
你的代码是有效的,除了它没有删除足够数量的空格,如果你只使用一次,编译就没用了:
>>> 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*')
答案 1 :(得分:0)
对于这个具体问题,您也可以这样做:
import re
string = "You get #{turns} guesses."
re.sub(r'#\S+ ', r'', string)
输出:
'You get guesses.'
正则表达式:
'#\S+ '
匹配#并匹配尽可能多的非空格字符和单个空格。