我正在尝试找到一种使用正则表达式将表达式分成多个部分的方法。我目前正在按空格分割所有内容,但这不是正确的方法。这是一个示例表达式:
var expression = "#X+ 23>=#Threshold && #X * 4 != 54 || #IgnoreCheck"
我正在寻找的结果是所有部分的列表:
["#X", "+", "23", ">=", "#Threshold", "&&", "#X", "*", "4", "!=", "54", "||", "IgnoreCheck"]
分割时要考虑的字符:
&& || != + = - * / ^ > < <= >=
您可以使用
var res = Regex.Split(expression, @"\s*(&&|\|\||<=|>=|!=|[-+=*/^><])\s*");
请参阅regex演示。主要思想是使用alteration(|
),因为某些替代方法是多字符字符串。
细节
\s*
-0+空格(&&|\|\||<=|>=|!=|[-+=*/^><])
-捕获组1(因此,与一起使用时Regex.Split
,这些部分将输出到结果数组中)匹配
&&
-两个&符|
- 要么\|\|
-2个管道|
- 要么<=
-<
然后=
|
- 要么>=
->
然后=
|
- 要么!=
-!
随后=
|
- 要么[-+=*/^><]
-此集合中的任何1个符号\s*
-0+空格本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句