正则表达式在分裂时排除部分字符串

时间:2011-10-28 15:23:49

标签: c# regex

几周前我问了一个关于如何基于特定子字符串拆分字符串的类似问题。但是,我现在想做一些不同的事情。我有一行看起来像这样(抱歉格式化):

我想要做的是在所有换行\ r \ n序列中分割这一行。但是,如果在其中一条PA41线之后有PA42,我不想这样做。我希望PA41和它后面的PA42线在同一条线上。我试过使用几个正则表达式无济于事。我正在寻找的输出理想情况如下:

这是我目前正在使用的正则表达式,但它并没有完全达到我想要的效果。

string[] p = Regex.Split(parameterList[selectedIndex], @"[\r\n]+(?=PA41)");

如果您需要任何澄清,请随时提出。

2 个答案:

答案 0 :(得分:3)

string[] splitArray = Regex.Split(subjectString, @"\\r\\n(?!PA42)");

这应该有效。它使用负前瞻断言来确保PA42不遵循\ r \ n序列。

说明:

@"
\\         # Match the character “\” literally
r          # Match the character “r” literally
\\         # Match the character “\” literally
n          # Match the character “n” literally
(?!        # Assert that it is impossible to match the regex below starting at this position (negative lookahead)
   PA42       # Match the characters “PA42” literally
)
"

答案 1 :(得分:3)

你正在尝试一个积极的预测,你想要一个负面的。 (肯定确保模式 遵循,而负面保险它不。)

(\\r\\n)(?!PA42)

作品for me