我可以根据 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 个或多个空格。如果您想至少需要两个,请替换[ ]+
with [ ]{2,}
如果你想要正好两个[ ]{2}
.
进一步阅读环视。 http://www.regular-expressions.info/lookaround.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)