gpt4 book ai didi

c# - .NET正则表达式识别 `if .. then .. else .. endif`

转载 作者:行者123 更新时间:2023-11-30 15:10:01 27 4
gpt4 key购买 nike

我需要两个正则表达式来识别if .. then .. else .. endif节及其部分。

来自如下表达式:

示例 1:

5 + 10 * (if (4 + 4.5) > 0 then 20 else 45 endif) + 2

示例 2:

if (20 == 10) then 10 endif

示例 3:

if (20/10 != 2) then (2 * 10) else (3 * 4) endif

预期结果:

  1. 可以给我 if..endif 的正则表达式参与表达对于前。从示例 1 我应该收到 if (4 + 4.5) > 0 then 20 else 45 endif分别

  2. 可以给我 if..endif 的正则表达式部分。对于前。从示例 1 我应该收到:

左比较器:(4 + 4.5)
接线员:>
右比较器:0
然后部分:20
其他部分:45 (可以为 null 或 string.Empty)

注意事项:

  1. else是可选的。
  2. if..endif可以是唯一的表达式,也可以是表达式的一部分。
  3. then & else可以有一个表达式或一个静态值。
  4. 可以在 if 条件中使用的条件运算符是 >, <, ==, !=, >=, <=
  5. 正则表达式应该在 C# 应用程序 中工作。

最佳答案

正则表达式不太适合这种工作,因为你可以嵌套 if/then/else 并且因为可能变体(例如缺少 else);正则表达式将是巨大的,并且需要大量的工作来平衡每次捕获的贪婪/懒惰。扫描每个字符并生成您随后可以解释的表达式树会容易得多。正则表达式更适合格式已知或几乎没有变化的文本解析。

编辑

想了想,其实也没那么难:

if(*.*?*)then(*.*?*)(?:else(*.*?*))?endif

每个捕获组包含组件:

  1. 条件
  2. 真值
  3. false 值(仅当存在 else 时)

我不保证准确性,因为它不适用于嵌套的 if 表达式,但对于您的需要它应该足够了。

关于c# - .NET正则表达式识别 `if .. then .. else .. endif`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3643891/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com