我需要重新制作正则表达式,以便它产生所需的结果
import re
txt = 'aba accca azzza wwwwa accca wwasdwaww abmasedmwa'
regex = re.sub(r'\ba([^a]+)a\b', r'!\1!', txt)
print(regex)
输出:
!b! !ccc! !zzz! wwwwa !ccc! wwasdwaww abmasedmwa
需要输出:
a!a a!!!a a!!!a wwwwa a!!!a wwasdwaww abmasedmwa
你可以使用
import re
txt = 'aba accca azzza wwwwa accca wwasdwaww abmasedmwa'
pattern = r'(?<=\ba)[^\Wa]+(?=a\b)'
print( re.sub(pattern, lambda x: '!' * len(x.group()), txt) )
查看 Python 演示。
详情
(?<=\ba)
- 正向后查找,与单词开头的 a
之前的位置匹配[^\Wa]+
- 除 a
(?=a\b)
- 正向前瞻,与单词结尾处紧随其后的 a
的位置匹配输出:
a!a a!!!a a!!!a wwwwa a!!!a wwasdwaww abmasedmwa
lambda x: '!' * len(x.group())
替换用相同数量的 !
字符替换匹配值。