我可以根据2个空格将字符串拆分为两个:
string Line = "1 2";
Regex.Split(Line, " ");
=> 1,2,
我想添加一个例外。如果'未被[]括起,则仅拆分,如本例所示。
string Line = "1 2 [1 2]";
Regex.Split(Line, " ");
=> 1,2,[1 2]
我可以通过正则表达式轻松实现这一目标吗?顺便说一句,我使用.NET。
答案 0 :(得分:2)
您可以使用前瞻,断言在下一个开始]
或字符串结尾之前没有结束[
:
Regex.Split(Line, @"[ ]+(?![^\[\]]*\])");
如果你有嵌套的[...]
结构,这将失败你。请注意,前瞻不是实际匹配的一部分,它只是检查后面的内容而不消耗任何东西。在前瞻中,我使用[^\[\]]
这是一个否定的字符类,匹配除了任何方括号之外的任何字符。
另请注意,这会在1个或多个空格上分割。如果您想要至少两个,请将[ ]+
替换为[ ]{2,}
,如果您只想要两个[ ]{2}
。