0

我有一个复杂的情况,我需要解析一个很长的字符串。我必须在字符串中寻找一个模式并用另一个模式替换该模式。我知道我可以简单地使用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并寻求帮助。

4

3 回答 3

6

正则表达式是矫枉过正:

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.
于 2013-01-09T09:47:33.047 回答
0
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";
于 2013-01-09T09:58:42.880 回答
0

也许是这样的:

表达:\w+#(?<Image>(.+)\.jpg)#\w+

替代品:${Image}

结果:string.Format("#EPB_IMG#{0}#EPB_IMG", string.Join("|", listOfMatches))


注意: 正则表达式测试:http ://regexhero.net/tester/

结果未经测试,但应该可以工作!

于 2013-01-09T09:46:35.583 回答