【问题标题】:what does this regular expression mean in lex这个正则表达式在 lex 中是什么意思
【发布时间】:2011-12-01 14:32:16
【问题描述】:

我正在从一本 o'reilly 的书中学习 lex 和 yacc,我遇到了一个 lex 示例,它处理命令、数字、字符串和换行符,忽略空格和 cmets。

我无法理解示例中的一个特定正则表达式:

\"[^\"\n]*\"

此表达式处理双引号中的文本。例如:"test regex" 会匹配成功,而 test regex 不会匹配。

我阅读了Wikipedia 关于正则表达式的文章,但我仍然不明白。

【问题讨论】:

标签: regex lex


【解决方案1】:

double quote (\"), anything but double quote or linefeed ([^\"\n]) 0 次或多次 (*), double quote (\")。

【讨论】:

  • 反斜杠的必要性是什么?我的意思是为什么正则表达式以 \"
  • 它转义了双引号,剥夺了它的任何特殊含义(比如双引号)。
  • 但是双引号有特殊含义吗?
  • 我认为他们在 lex 中会这样做,虽然已经有一段时间了。
  • The quotation mark operator (") indicates that whatever is contained between a pair of quotes is to be taken as text characters. dinosaur.compilertools.net/lex/index.html - 通常情况下,带引号的字符串是字面意思
【解决方案2】:
\"

匹配起始引号(“)。引号用 \ 转义以不破坏正则表达式字符串。

[^\"\n]*

匹配除引号或行尾之外的任何内容。 ^ 表示不匹配,\n 是行尾,* 表示匹配 0 次或更多

\"

匹配最后一个引号

【讨论】:

    猜你喜欢
    • 2012-05-07
    • 1970-01-01
    • 2013-02-18
    • 2017-05-23
    • 2016-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-20
    相关资源
    最近更新 更多