除了方括号内以外,请使用斜杠

时间:2012-05-11 17:53:31

标签: c# regex

示例文本(我突出显示了所需的/):

对[@密钥= 2] / {项{1}}项目[人/名称= '马丁'] /日期

我正试图让每个正斜线都不在方括号内,任何人都可以使用正则表达式来帮我解决这个问题吗?用途是:

/

我已经用这段代码完成了它,但是想知道是否有更简单的正则表达式可以做同样的事情:

string[] result = Regex.Split(text, pattern);

2 个答案:

答案 0 :(得分:2)

这对一般情况不起作用,但它会对大多数实际情况做正确的事情:

(?<!\[[^]]+)/

此表达式使用negative lookbehind来匹配正斜杠,除非它前面有一个方括号后跟一个字符序列而不是一个右方括号。

答案 1 :(得分:2)

使用Regex.Matches可能比尝试使用拆分更好。您可以尝试匹配所需的输出,而不是指定要拆分的模式。这适用于基本情况:

string[] FancySplit(string input) {
    return Regex.Matches(input, @"([^/\[\]]|\[[^]]*\])+")
        .Cast<Match>()
        .Select(m => m.Value)
        .ToArray();
}

正则表达式的方法是查找以下序列:

  • 不是[]/的字符
  • [形式的]形式的序列,其中允许某些内容包含/