正则表达式可划分数学和逻辑表达式C#

安多尼·祖比萨雷塔(Andoni Zubizarreta)

我正在尝试找到一种使用正则表达式将表达式分成多个部分的方法。我目前正在按空格分割所有内容,但这不是正确的方法。这是一个示例表达式:

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章