代码之家  ›  专栏  ›  技术社区  ›  The.Anti.9

查找开始和结束报价单

  •  0
  • The.Anti.9  · 技术社区  · 15 年前

    我开始用JavaScript编写代码语法高亮显示程序,我想突出显示某些颜色的引号(S和S)中的文本。我需要它能够不被其中一种类型的引文在一对其他引文的中间,以及混乱,但我真的不确定从哪里开始。我不知道该如何找到报价,然后找到正确的结束报价。

    4 回复  |  直到 15 年前
        1
  •  1
  •   Blixt    15 年前

    除非你是为了挑战才这么做的,看看 Google Code Prettify .

    对于你的问题,你可以继续读下去 parsing (and lexers) at Wikipedia . 这是一个很大的主题,你会发现你会遇到比解析字符串更大的问题。

    开始,你 能够 使用正则表达式(尽管它们很少具有真正lexer的精度。)匹配字符串的典型正则表达式是:

    /"(?:[^"\\]+|\\.)*"/
    

    然后同样适用于 ' 而不是 " .

    否则,对于逐个字符的解析器,您将设置某种状态,一旦您点击 ,然后当你击中 前面不是一个不均匀的反斜杠(即使是一个偶数的反斜杠也会相互逃逸),而是退出字符串。

        2
  •  1
  •   James    15 年前

    使用正则表达式可以找到引号,但是如果编写的是语法高亮,那么唯一可靠的方法是逐字逐句地遍历代码,并从中决定要做什么。

    例如正则表达式

    /("|')((?:\\\1|.)+?)\1/g
    

    (与“thi s”、“thi s”和“thi”匹配)

        3
  •  0
  •   Umair Ahmed    15 年前

    使用栈…如果找到不匹配的报价单,请推送。如果找到匹配,则弹出

        4
  •  0
  •   Rambo    15 年前

    我在PHP中使用了一个向后引用的正则表达式。JS不支持它,如果您真的想要检测未定义的反斜杠,我认为这就是您需要的。