使用正则表达式替换字符串*中的所有a

时间:2017-04-08 10:17:11

标签: python regex replace

我想替换所有' A'在' *'的字符串中间在python中使用正则表达式 我试过这个

re.sub(r'[B-Z]+([A]+)[B-Z]+', r'*', 'JAYANTA ')

但输出 - ' * ANTA'

我希望它是' J * Y * NTA'

有人可以提供所需的代码吗?如果可能的话,我想解释一下代码中的错误。

3 个答案:

答案 0 :(得分:2)

使用非wordboundary \B
确保A字符被单词字符包围:

import re
str = 'JAYANTA POKED AGASTYA WITH BAAAAMBOO '
str = re.sub(r'\BA+\B', r'*', str)
print(str)

打印:

J*Y*NTA POKED AG*STYA WITH B*MBOO 

或者,如果您想要更具体,它必须被大写字母包围。您可以使用lookbehind和lookahead。

str = re.sub(r'(?<=[A-Z])A+(?=[A-Z])', r'*', str)

答案 1 :(得分:1)

>>> re.sub(r'(?!^)[Aa](?!$)','*','JAYANTA')
'J*Y*NTA'

我的正则表达式搜索A但它不能在字符串的开头(?!^)而不是在字符串的末尾(?!$)。

答案 2 :(得分:1)

Lookahead断言:

>>> re.sub(r'A(?=[A-Z])', r'*', 'JAYANTA ')
'J*Y*NTA '

如果单词以&#39; A&#39;:

开头和结尾
>>> re.sub(r'(?<=[A-Z])A(?=[A-Z])', r'*', 'AJAYANTA ')
'AJ*Y*NTA '