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

标签 c# regex

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

var expression = "#X+ 23>=#Threshold && #X * 4 != 54 || #IgnoreCheck"

我要查找的结果是所有部分的列表:

["#X", "+", "23", ">=", "#Threshold", "&&", "#X", "*", "4", "!=", "54", "||", "IgnoreCheck"] 

拆分时要考虑的字符:

&& || != + = - * / ^ > < <= >=

最佳答案

你可以使用

var res = Regex.Split(expression, @"\s*(&&|\|\||<=|>=|!=|[-+=*/^><])\s*");

参见 regex demo .主要思想是使用交替 (|),因为一些替代是多字符字符串。

详情

  • \s* - 0+ 空格
  • (&&|\|\||<=|>=|!=|[-+=*/^><]) - 捕获组 1(因此,当与 Regex.Split 一起使用时,这些部分将输出到结果数组中)匹配
    • && - 两个符号
    • | - 或者
    • \|\| - 2 个管道
    • | - 或者
    • <= - 一个 <然后 =
    • | - 或者
    • >= - 一个 >然后 =
    • | - 或者
    • != - !其次是 =
    • | - 或者
    • [-+=*/^><] - 此集合中的任何 1 个符号
  • \s* - 0+ 空格

enter image description here

关于c# - 正则表达式划分数学和逻辑表达式C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42076457/

相关文章:

c# - 如何在 Unity2D 中以编程方式切换图 block 调色板

Python 正则表达式组解析具有可能存在或不存在的多个组的输入

正则表达式匹配不包含斜杠的字符串

php - mysql_real_escape_string() 是否足以用于 MySQL REGEXP?

php - 如何在 PHP 中删除双引号之间的逗号

c# - 您可以搜索所需的文件,而不是将 Directory.GetFiles() 放入列表中吗?

c# - 尽管安装了 Mono,但 Unity 中的 Monodevelop 找不到系统引用

c# - ASP .NET MVC,创建类似路由配置的永久链接

c# - 我如何断言一个字符属于预期值列表?

c# - 如何在日语窗口操作系统中对日语文本进行编码?