我使用以下代码将每个非首字母和非结尾字母替换为
!
在以 a
开头和结尾的单词中,不包含 a
单词中的其他任何位置:
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())
替换用相同数量的 !
字符替换匹配值。