regex 正则表达式替换使用模式

mbzjlibv  于 2023-06-25  发布在  其他
关注(0)|答案(2)|浏览(141)

在C++中,我需要使用正则表达式将正则表达式匹配的模式替换为另一个模式。
示例-我们有以下字符:“a”和“B”
我想这样替换-
原文-

aabaaaaaaabaaabab

更换-

abbabbbbbbbabbbab

我找到了下面的正则表达式来获取匹配-

aa+b

必须应用什么正则表达式替换模式才能获得所需的替换?
谢谢

3j86kqsm

3j86kqsm1#

如果使用lookarounds是一种可能性为您,这里是一个解决方案。匹配以下模式:

(?<=a)a(?=a*b)

然后仅用单个b替换。模式说要匹配:

(?<=a)   assert that at least one 'a' precedes (i.e. ignore first 'a')
a        a letter 'a'
(?=a*b)  which is following by zero or more 'a' then a 'b'

这里是工作demo

pqwbnv8z

pqwbnv8z2#

这里有一个解决方案,不限于字母'a''b'
以下正则表达式的匹配项将被捕获组2的内容替换。

(?<=(.))\1(?=\1*(.))

Demo
正则表达式由以下元素组成。

(?<=    # begin a positive lookbehind
  (.)   # match any character and save to capture group 1
)       # end positive lookbehind  
\1      # match the content of capture group 1 
(?=     # begin a positive lookahead
  \1*   # match the content of capture group 1 zero or more times
  (.)   # match any character and save to capture group 2
)       # end positive lookahead

相关问题