在正则表达式中匹配a+

6
这应该很简单,但我已经在工作中让两个人困惑了,而我已经花了三个多小时了,所以请看这里。
我需要使用Python re模块将a+替换为aplus(以及其他几种情况)。 例如。 "我通过了a +考试"需要变成“我通过了aplus考试”。
通常只使用\ba+就可以了,但在a + b的情况下失败了,因此无法使用它,它需要将a+视为一个独立的单词进行匹配。我尝试过\ba+\b,但它失败了,因为我认为+是一个单词边界。
我还尝试过\ba+\W,它确实起作用,但是它贪婪地吞掉了空格(或任何其他可能存在的非字母字符)。
有什么建议吗?

正则表达式更正:我对“+”进行了转义,只是打错了。所以应该是\ba+,\ba+\b等。 - dochead
1
此信息属于问题,不属于评论。 - SilentGhost
3个回答

8
将那个 \W 转化为一个断言。
\ba\+(?=\W)

或者,更好的是,
\ba\+(?!\w)

由于否定断言允许匹配字符串末尾的 a+

1
>>> re.sub(r'\ba\+\s', 'aplus ', 'I passed my a+ exam.')
'I passed my aplus exam.'
>>> re.sub(r'\ba\+\s', 'aplus ', 'a+b')
'a+b'

0

您需要转义+,因为它在正则表达式中具有特殊含义(一个或多个a)。 搜索a\+而不是a+


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接