正则表达式使用\分割多行字符串

时间:2010-10-14 13:21:57

标签: c# regex split multiline

我已经尝试了大约RegexOptions.MultiLine和转义反斜杠的每种可能组合,以便使用\作为分隔符拆分文本。

我有这样的文字:

The quick brown
Fox jumps\
Over the
Lazy dog\

我想把它分成

The quick brown
Fox jumps\

Over the
Lazy dog\

到目前为止我已尝试过(同时调用正则表达式的Split方法):

Regex regexSplit = new Regex(@"\\$", RegexOptions.Multiline);
Regex regexSplit = new Regex(@"\$", RegexOptions.Multiline);
Regex regexSplit = new Regex(@"\\$", RegexOptions.Singleline);
Regex regexSplit = new Regex(@"\$", RegexOptions.Singleline);
Regex regexSplit = new Regex(@"\\$");
Regex regexSplit = new Regex(@"\$");

每次我收回完整的原始字符串。 你能帮我一把吗?

提前谢谢。

编辑:我删除了一个额外的空间。 我需要使用正则表达式的原因是因为\可能位于用“”或“”括起来的匹配中。 这就是为什么我也需要在行尾匹配。

当我使用RegexBuddy和相同的输入文本测试表达式时,我必须添加\\$

2 个答案:

答案 0 :(得分:1)

“Fox jumps”中有一个额外的空格,因此@"\\$"将不匹配。删除空格或使用@"\\"进行拆分。您还可以检查空格@"\\\s*$"

这个应该可以解决问题:

var results = Regex.Split(subject, @"\\\s*$", RegexOptions.Multiline);

答案 1 :(得分:1)

为什么不将这个简单的字符串拆分:

        string s = "The quick brown\r\nFox jumps\\\\r\n Over the\r\nLazy dog\\";
    s.Split(new string[] { "\\\r\n" }, StringSplitOptions.RemoveEmptyEntries);