如何使用jflex在特殊标签之间获取文本

时间:2016-08-04 20:29:17

标签: java regex intellij-idea intellij-plugin jflex

我有特殊标签为" {code}"。我需要使用jflex在其中两个标签之间获取一些文本。

我正在尝试使用以下正则表达式

CODE_BLOCK= "{code}"(.*?)"{code}"

问题是它总是只在最后一个标签之间返回文本。看起来?根本不起作用。我需要有能力只获得

{code}abs{code}

{code}abs{code}{code}{code}

1 个答案:

答案 0 :(得分:0)

这里有几个不同的选择:

如果括号括号({)字符没有出现在您的文字中,则可以使用{code}([^{]+){code}作为正则表达式。

如果确实如此,并且它已被转义,您可以执行{code}((?:[^{]|\\{)+){code}之类的操作。用适当的转义字符替换\\(在这种情况下,我已经采用了通常的字面反斜杠字符约定)。

如果它出现在标签之间并且没有被转义,你可能想要编写一个正确的解析器,因为正则表达式并没有真正用于此类事情。