示例文本(我突出显示了所需的/
):
对[@密钥= 2] /
{项{1}}项目[人/名称= '马丁'] /
日期
我正试图让每个正斜线都不在方括号内,任何人都可以使用正则表达式来帮我解决这个问题吗?用途是:
/
我已经用这段代码完成了它,但是想知道是否有更简单的正则表达式可以做同样的事情:
string[] result = Regex.Split(text, pattern);
答案 0 :(得分:2)
这对一般情况不起作用,但它会对大多数实际情况做正确的事情:
(?<!\[[^]]+)/
此表达式使用negative lookbehind来匹配正斜杠,除非它前面有一个方括号后跟一个字符序列而不是一个右方括号。
答案 1 :(得分:2)
使用Regex.Matches
可能比尝试使用拆分更好。您可以尝试匹配所需的输出,而不是指定要拆分的模式。这适用于基本情况:
string[] FancySplit(string input) {
return Regex.Matches(input, @"([^/\[\]]|\[[^]]*\])+")
.Cast<Match>()
.Select(m => m.Value)
.ToArray();
}
正则表达式的方法是查找以下序列:
[
,]
或/
的字符
[
形式的]
形式的序列,其中允许某些内容包含/