用相同数量的特定字符替换以特定字母开头和结尾的单词内的内部字母[关闭]

问题描述 投票:0回答:1

我需要重新制作正则表达式,以便它产生所需的结果

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
python regex
1个回答
0
投票

你可以使用

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())
替换用相同数量的
!
字符替换匹配值。

© www.soinside.com 2019 - 2024. All rights reserved.