使用正则表达式(python)从字符串中删除#{word}

时间:2017-01-27 16:00:40

标签: python regex

我对正则表达式并不熟悉,能得到一些帮助会很棒。

我有一个字符串:string = "You get #{turns} guesses." 我想删除#{turns}以获得string = "You get guesses."

我试过了:

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

有什么建议吗?

2 个答案:

答案 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+ '匹配#并匹配尽可能多的非空格字符和单个空格。