我正在尝试制作一个简单的 Lexer 来了解它们是如何工作的。我正在尝试找出一个可以捕获任何类型的打开 HTML 标记的良好 POSIX 字符串。我做了一个几乎可以工作但在更复杂的标签(如元标签等)上失败了。到目前为止,这就是我所拥有的:
"<\\p{Alnum}+(\\p{Space}\\p{Alnum}+\\p{Space}*=\"*\\p{Space}*\\p{Alnum}+\"*)*\\p{Space}*>"
这个 POSIX 字符串捕获了很多标签,但错过了一些像元标签和 DOC 标签。这是一个失败的标签:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
任何帮助将非常感激。我知道这可能不是制作 Lexer 的最佳方式,但这只是为了帮助我了解 Regex 的工作原理。