我想替换所有' A'在' *'的字符串中间在python中使用正则表达式 我试过这个
re.sub(r'[B-Z]+([A]+)[B-Z]+', r'*', 'JAYANTA ')
但输出 - ' * ANTA'
我希望它是' J * Y * NTA'
有人可以提供所需的代码吗?如果可能的话,我想解释一下代码中的错误。
答案 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 '