我有一个特殊的标记"{code}"。我需要使用jflex在其中两个标签之间获取一些文本。
我正在尝试使用以下正则表达式进行
CODE_BLOCK= "{code}"(.*?)"{code}"
问题是它总是只返回第一个和最后一个标记之间的文本。看起来?
根本不起作用。我需要有一种只获取的能力
{code}abs{code}
来自
{code}abs{code}{code}{code}
这里有几个不同的选项:
如果文本中没有出现大括号({
(字符,则可以使用{code}([^{]+){code}
作为正则表达式。
如果它真的逃脱了,你可以做一些类似{code}((?:[^{]|\{)+){code}
的事情。将\
替换为适当的转义符(在本例中,我使用了通常的反斜杠字符约定(。
如果它出现在标记之间并且没有转义,您可能需要考虑编写一个合适的解析器,因为regex并不是真正适合这类事情的。