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

本文关键字:字符串 正则表达式 排除部 分割 | 更新日期: 2023-09-27 18:12:53

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

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

这是我目前正在使用的正则表达式,但它并没有完全完成我正在寻找的。

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

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

你想要一个积极的向前看,你想要一个消极的。(Positive确保模式遵循,而negative确保不遵循)

(''r''n)(?!PA42)

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

这应该可以工作。它使用负向前看断言来确保'r'n序列不后跟PA42。

说明:

@"
''         # 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
)
"