我在PowerShell中要解决以下问题 - 如何在大字符串中替换每次出现的字符串?
示例:
ReplaceEverySecond "AAAABAAAAAABAAAABAAABAA" "B" "x"
会变成:
“AAAAxAAAAAABAAAAxAAABAA”
我怀疑最容易构造正则表达式并使用-replace函数,但我无法弄清楚如何构造表达式。
感谢大家的帮助。
答案 0 :(得分:3)
让我们假设"BA"
为要替换的字符串。然后你可以使用正则表达式
(BA(?:(?!BA).)*)BA((?:(?!BA).)*)
并替换为\1xx\2
。这不仅限于文字字符串,您也可以使用正则表达式代替BA
。
<强>解释强>
( # Start group 1
BA # Match BA (no. 1)
(?: # Match in non-capturing group:
(?!BA) # (unless it's at the start of "BA")
. # any character
)* # any number of times.
) # End of group 1
BA # Match BA (no. 2)
((?:(?!BA).)*) # and anything that follows until the next BA, if present.