正则表达式替换'?'在一个单词的中间或开头

时间:2014-11-07 16:07:11

标签: regex replace

我无法制定正则表达式 会取代“?”的出现次数在中间或开始 的话。 让我们说我有这段文字:

?this
tha?t
midd?le
?beginning

我想替换所有出现的“?”用“x”,所以它将成为

xthis
thaxt
middxle
xbeginning

我特意找?在单词的开头或中间因为 如果它在一个单词/行的末尾它实际上是一个?而不是一个未知的角色。

3 个答案:

答案 0 :(得分:0)

您可以使用前瞻来确保?不在最后使用:

\?(?!$)

答案 1 :(得分:0)

尝试使用以下正则表达式匹配不在单词或句子末尾的所有?。然后将匹配的?符号替换为x

\?(?!\s|$)

答案 2 :(得分:0)

最简单的方法是匹配\?\b,因为\b只匹配非字母数字字符(如?)和字母数字字符(如字母)。

>>> s = """?this
... tha?t
... midd?le
... ?beginning
... end?
... even this???
... """
>>> print(re.sub(r"\?\b", "x", s))
xthis
thaxt
middxle
xbeginning
end?
even this???