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



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

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

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

问题是它总是只返回第一个和最后一个标记之间的文本。看起来?根本不起作用。我需要有一种只获取的能力

{code}abs{code}

来自

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

这里有几个不同的选项:

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

如果它真的逃脱了,你可以做一些类似{code}((?:[^{]|\{)+){code}的事情。将\替换为适当的转义符(在本例中,我使用了通常的反斜杠字符约定(。

如果它出现在标记之间并且没有转义,您可能需要考虑编写一个合适的解析器,因为regex并不是真正适合这类事情的。

最新更新