C#正则表达式忽略逃脱的角色

时间:2010-10-19 03:47:18

标签: c# regex

我有一个这样的字符串,它是分隔的|,并且可以包含其间的任何字符:

"one two|three four five|six \| seven eight|nine"

我想找一个返回的正则表达式:

one two
three four five
six | seven eight
nine

我可以考虑如何做到这一点但是,我不太了解正则表达式。我基本上想要匹配,直到我找到|之前没有\的{​​{1}}。我该怎么做呢?我知道有一个后跟踪器,但我不知道该怎么做。

2 个答案:

答案 0 :(得分:3)

基本上你想找到这种模式的实例:

@"([^|\\]|\\.)+"

匹配:

  1. [^|\\] - 除了管道或反斜杠之外的任何字符。
  2. \\. - 任何使用反斜杠转义的字符。
  3. (...|...)+ - 一个或多个上述(转义)字符。
  4. \\.构造很好,因为它可以让你转义任何角色,特别是其他反斜杠。这使您可以在字符串的末尾加上反斜杠,例如:

    "backslash \\|forward slash /|pipe \|"
    

答案 1 :(得分:1)

Regex.Split(input, @"(?<!\\)\|");
  • (?<!\\) - 负面的背后隐藏。前面没有\