c#中的查找-替换模式
本文关键字:替换 模式 查找 | 更新日期: 2023-09-27 17:51:08
我有一个复杂的情况,我需要解析一个很长的字符串。我必须在字符串中寻找一个模式,并将该模式替换为另一个模式。我知道我可以简单地使用find/replace
方法,但我的情况有点不同。
我有一个包含以下模式的字符串
#EPB_IMG#index-1_1.jpg#EPB_IMG
#EPB_IMG#index-1_2.jpg#EPB_IMG
#EPB_IMG#index-1_3.jpg#EPB_IMG
#EPB_IMG#index-1_4.jpg#EPB_IMG
,我希望它的格式为
#EPB_IMG#index-1_1.jpg|index-1_2.jpg|index-1_3.jpg|index-1_4.jpg#EPB_IMG
我不太了解Regex
和寻求帮助。
正则表达式是多余的:
var parts = s.Split(new string[] { "#EPB_IMG", "#", "'n", "'r" }, StringSplitOptions.RemoveEmptyEntries);
var result = string.Join("|", parts);
Console.WriteLine("#EPB_IMG#" + result + "#EPB_IMG"); // prints your result.
可以这样写:
表达:'w+#(?<Image>(.+)'.jpg)#'w+
替换:${Image}
Result: string.Format("#EPB_IMG#{0}#EPB_IMG", string.Join("|", listOfMatches))
注意:使用:http://regexhero.net/tester/
测试正则表达式结果是未经测试的,但应该工作!
var result = "#EPB_IMG" + Regex.Matches(inputString, @"#EPB_IMG(.+)#EPB_IMG")
.Cast<Match>()
.Select(m => m.Groups[1].Value)
.Aggregate((f, f2) => f + "|" + f2) + "#EPB_IMG";