正则表达式 .net 分割

2024-04-24

我可以根据 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(使用前将#替换为@)

正则表达式 .net 分割 的相关文章

随机推荐