正则表达式忽略多余的花括号

我正在构建一个 lex 程序,它将分析如下内容...

function myFunc {
    if a = b {
        print "Cool"
    }
}

是否有可能,特别是使用 flex,创建一个正则表达式来挑出第一个 {} 中的所有内容

所以我会得到

{ if a = b { print "Cool" } }

代替

{ if a = b { print "Cool" }

目前在我的 flex 文件中,我有这个正则表达式 {[^\0]*}

精灵07KSU

您正在尝试做的一个问题是 RegEx 默认情况下是贪婪的(可以做一些技巧来改变它,但您仍然会遇到问题),如果您在具有多个文件的文件上运行它,您将匹配更多在其中发挥作用。原因是大多数编程语言是Chomsky 层次结构中的Type 1 文法,或者上下文相关文法,而 RegEx 是 Type 2(上下文无关)文法。基本上不可能在没有大量工作的情况下直接使用后者解析前者。对此的完整解释很长。但归结为在上下文敏感的语法中,给定元素的含义可以根据您在输入中的位置而改变,而在上下文无关的语法中,每个元素都只有一个含义。在您的情况下,您不想匹配任何 ole'},要匹配相应}于一个开放的{,这涉及到计算的数量{}到目前为止你已经看到了。

如果您真的想进行代码解析而不必重新发明轮子、犁、火、钢,甚至电力,我建议您在 GitHub 上查看AnTLRAnTLR 将允许您为您尝试解析的语言创建语法(如果尚不存在),并以Parse Tree的形式向您提供已解析的源代码解析树非常非常易于使用,AnTLR 已经拥有几乎所有可以想象到的语言的语法,以及多种语言的插件

除此之外,我使用的在线正则表达式测试器和带有示例代码的 Notepad++ 都匹配。您可以尝试{.*}也匹配所有内容的 RegEx

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Perl在正则表达式中的花括号

来自分类Dev

正则表达式省略花括号

来自分类Dev

正则表达式在花括号周围分裂

来自分类Dev

正则表达式替换花括号内的点?

来自分类Dev

Perl在正则表达式中的花括号

来自分类Dev

正则表达式花括号无法正常工作

来自分类Dev

正则表达式匹配双花括号嵌套

来自分类Dev

双花括号的Java正则表达式模式

来自分类Dev

Scala:正则表达式模式与花括号匹配?

来自分类Dev

用于花括号的正则表达式数字Java中的花括号({n})

来自分类Dev

正则表达式忽略括号之间的数据

来自分类Dev

正则表达式忽略括号之间的数据

来自分类Dev

忽略正则表达式中括号内的块

来自分类Dev

PostgreSQL:正则表达式用花括号替换第一级方括号

来自分类Dev

PostgreSQL:正则表达式用花括号替换第一级方括号

来自分类Dev

用于关闭花括号的正则表达式,不带句点

来自分类Dev

正则表达式提取2个花括号之间的字符串

来自分类Dev

Ruby正则表达式中递归嵌套匹配的花括号对

来自分类Dev

正则表达式在双花括号之间得到任何东西

来自分类Dev

正则表达式将不平衡的花括号视为一个单词

来自分类Dev

在双花括号“ {{}}”中获取值的正则表达式

来自分类Dev

正则表达式模式在花括号之间获取字符串

来自分类Dev

Python 3.4-用于匹配最里面花括号的正则表达式

来自分类Dev

正则表达式在花括号内找到一个词

来自分类Dev

C#正则表达式和花括号重复

来自分类Dev

GNU awk是否接受在正则表达式中使用花括号指定的间隔?

来自分类Dev

存在多个花括号时如何使用正则表达式获取完全匹配的短语

来自分类Dev

Python 正则表达式:仅在花括号后面匹配字符串

来自分类Dev

为什么此正则表达式替换中有多余的括号?

Related 相关文章

  1. 1

    Perl在正则表达式中的花括号

  2. 2

    正则表达式省略花括号

  3. 3

    正则表达式在花括号周围分裂

  4. 4

    正则表达式替换花括号内的点?

  5. 5

    Perl在正则表达式中的花括号

  6. 6

    正则表达式花括号无法正常工作

  7. 7

    正则表达式匹配双花括号嵌套

  8. 8

    双花括号的Java正则表达式模式

  9. 9

    Scala:正则表达式模式与花括号匹配?

  10. 10

    用于花括号的正则表达式数字Java中的花括号({n})

  11. 11

    正则表达式忽略括号之间的数据

  12. 12

    正则表达式忽略括号之间的数据

  13. 13

    忽略正则表达式中括号内的块

  14. 14

    PostgreSQL:正则表达式用花括号替换第一级方括号

  15. 15

    PostgreSQL:正则表达式用花括号替换第一级方括号

  16. 16

    用于关闭花括号的正则表达式,不带句点

  17. 17

    正则表达式提取2个花括号之间的字符串

  18. 18

    Ruby正则表达式中递归嵌套匹配的花括号对

  19. 19

    正则表达式在双花括号之间得到任何东西

  20. 20

    正则表达式将不平衡的花括号视为一个单词

  21. 21

    在双花括号“ {{}}”中获取值的正则表达式

  22. 22

    正则表达式模式在花括号之间获取字符串

  23. 23

    Python 3.4-用于匹配最里面花括号的正则表达式

  24. 24

    正则表达式在花括号内找到一个词

  25. 25

    C#正则表达式和花括号重复

  26. 26

    GNU awk是否接受在正则表达式中使用花括号指定的间隔?

  27. 27

    存在多个花括号时如何使用正则表达式获取完全匹配的短语

  28. 28

    Python 正则表达式:仅在花括号后面匹配字符串

  29. 29

    为什么此正则表达式替换中有多余的括号?

热门标签

归档