【发布时间】:2019-07-24 11:14:40
【问题描述】:
我正在 jflex 中编写分词器。我需要将interferon-a 之类的词匹配为一个标记,将interferon-alpha 之类的词匹配为三个。
明显的解决方案是前瞻,但它们在 jflex 中不起作用。对于类似的任务,我编写了一个函数,在匹配的模式之后匹配一个额外的通配符,检查它是否是 java 代码中的空格,并在有或没有匹配字符串的一部分的情况下将其推回。
REGEX = [:letter:]+\-[:letter:]\.
从字符串interferon-alpha 匹配interferon-al。
然后,在 Java 代码部分中,它会检查匹配的最后一个字符是否是空格。不是,所以-al 将被推回并返回interferon。
在interferon-a 的情况下,空格将被推回并返回interferon。
但是,如果匹配的字符串没有任何成功,则此功能不起作用。此外,它似乎很笨拙。因此,我想知道是否有任何“更好”的方法来确保以下字符是空格而不实际匹配并返回它。
【问题讨论】:
标签: regex flex-lexer regex-lookarounds lexer jflex