我有一个像下面这样的字符串
“呜呜……呜呜……呜呜……呜呜。”
超过一个点的每一部分都必须用“_”替换,但它必须与替换的字符具有相同的数量。
该字符串应导致:
“bla___blup__blaaa___bla。”
请注意,最后一个点没有被替换,因为它没有“连接”其他点。
我尝试在 powershell 中使用以下正则表达式方法,但无论是否有 3 个或更多点,我总是得到 2 的匹配长度:
$string -replace '(.)\1+',("_"*'$&'.length)
有任何想法吗?
最佳答案
您可以使用 \G anchor将匹配粘合到前一个。
\.(?=\.)|\G(?!^)\.
\.(?=\.)
如果另一个句号是 ahead,则匹配句号. |\G(?!^)\.
或者如果有之前的匹配(但不是开始)则替换句号 替换为下划线。 See demo at regexstorm
关于regex - 用不同的字符但相同的数量替换字符串中的多个点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35272118/