【发布时间】:2019-11-23 22:48:33
【问题描述】:
我需要用and 操作数(最后是Or)分割一个字符串,但我不知道该怎么做。
例如,如果我有以下字符串
Name contains 'al' and Country equals 'US|UK|FR' and Status equals 'Open|Closed'
我想取回一个包含以下内容的数组:
[0]Name contains 'al'
[1]Country equals 'US|UK|FR'
[2]Status equals 'Open|Closed'
如果我只有Name contains 'al' 而没有任何and,它应该只返回提供的字符串
[0]Name contains 'al'
我尝试过一些简单的事情,例如:
-
(and)但这只返回 and 而不是内容。 -
(?<=and)(.*)(?=and)但这会返回第二个的内容,不包括第一个或最后一个。 -
\b(and )但同样,这只会返回,我不明白为什么如果我在and前面包含一个空格,如果找不到任何实例。 -
.*(\b(and))但这会跳过第一个and并将内容一直返回到第二个and
你能帮忙吗?
谢谢
注意:这将用于 .net 2019 项目。
【问题讨论】:
-
也许
s.Split(new[] {"and", "or"}, StringSplitOptions.RemoveEmptyEntries)可以吗?好吧,你也可以试试Regex.Split(s, @"(?i)\s*\b(?:and|or)\b\s*") -
@WiktorStribiżew 我不敢相信我没有早点想到这个!当我应该考虑已经很容易获得的东西时,我只是坚持使用 RegEx 的想法!拆分成功了!谢谢。顺便说一句,可能想坚持这个答案。
-
@WiktorStribiżew 哦,顺便说一句,你的 RegEx 也很有魅力 :)
标签: c# .net regex regex-group