如何在windows c中以多个连续模式插入字符串#
问题描述:
我想在符号之间插入字符串,但符号是连续的。像'xx ;; string ;;; string ;; string ;;;;'如何在windows c中以多个连续模式插入字符串#
我可以使用Regex r = new Regex(@";;", RegexOptions.Singleline);text = r.Replace(text, ";na;");
,但输出将是xx;na;string;na;;string;na;string;na;;na;
我要的是xx;na;string;na;na;string;na;string;na;na;na;
我想之间的所有空的空间“;;”在其中有na。
有没有什么C#函数可以实现这个?
答
您可以使用正则表达式;(?=;)
与前瞻匹配;
,然后用另外;
不消耗第二;
:
var str = "xx;;string;;;string;;string;;;;";
var res = Regex.Replace(str, ";(?=;)", ";na");
Console.WriteLine(res); // => xx;na;string;na;na;string;na;string;na;na;na;
的(?=;)
是positive lookahead仅检查是否存在紧接;
到当前位置的左侧,但不将其添加到匹配值(因此它不会被删除)和不动的正则表达式指数(以便在下一次迭代期间再次匹配相同的;
)。
+1
欣赏答案 – sowrdking
这个'.Replace(“;;”,“; na;”)'不会产生预期的结果。 –
运行你的正则表达式两次 – Piro