Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我可以根据 2 个空格将一个字符串分成两个:
string Line = "1 2"; Regex.Split(Line, " ");
=> 1, 2
我想添加一个例外。如本例所示,仅在“未被 [] 括起来”时才拆分。
string Line = "1 2 [1 2]"; Regex.Split(Line, " ");
=> 1, 2, [1 2]
我可以通过正则表达式轻松实现这一目标吗?顺便说一句,我使用.NET。
您可以使用前瞻,它断言]在下一个开头[或字符串结尾之前没有关闭:
]
[
Regex.Split(Line, @"[ ]+(?![^\[\]]*\])");
但是,如果您有嵌套[...]结构,这将使您失败。请注意,前瞻不是实际匹配的一部分,它只是检查后面的内容而不消耗任何内容。在我使用的前瞻中[^\[\]],它是一个否定字符类,匹配除任何类型的方括号之外的任何字符。
[...]
[^\[\]]
另请注意,这将拆分为 1 个或多个空格。如果您想至少需要两个,请替换[ ]+为[ ]{2,}and 如果您想要两个,请替换为[ ]{2}。
[ ]+
[ ]{2,}
[ ]{2}
进一步阅读环视。