【发布时间】:2011-05-23 17:08:14
【问题描述】:
我正在尝试为课程学习正则表达式模式。我正在制作一个简单的 HTML Lexer/Parser。我知道这不是制作 Lexer/Parser 的最佳或最有效的方法,但它只是为了理解 Regex 模式。
所以我的问题是,如何创建一个模式来检查字符串是否不包含任何 HTML 标签(即<TAG>)并且不包含任何 HTML 实体(即&ENT;)?
这是我目前所能想到的,但它仍然不起作用:
.+?(^(?:&[A-Za-z0-9#]+;)^(?:<.*?>))
编辑:唯一的问题是我不能否定最终结果,我需要找到一个完整的模式来完成这项任务,如果可能的话,虽然它可能不漂亮。我从来没有提到过,但它几乎应该匹配 HTML 页面中的任何简单文本。
【问题讨论】:
-
你为什么不能否定这个模式?我不明白你的推理......
-
您可以复制您的 HTML 字符串,然后使用下面的正则表达式模式来删除 HTML 标记和实体(用任何内容替换模式)。这给你留下了纯文本(尽管实体已经消失而不是翻译成它们的实际字符)。
标签: java regex posix regex-negation