获取不同HTML标记的最佳方法
我试图从不同的博客中获取一些HTML,并注意到不同的提供者以不同的方式使用相同的标记 例如,这里有两个主要的提供者以不同的方式使用meta name generator标记:获取不同HTML标记的最佳方法,html,regex,language-agnostic,Html,Regex,Language Agnostic,我试图从不同的博客中获取一些HTML,并注意到不同的提供者以不同的方式使用相同的标记 例如,这里有两个主要的提供者以不同的方式使用meta name generator标记: 博主:(内容优先,名字后,是的,单引号!) WordPress:(先命名,后内容) 是否有方法提取所有案例的内容值(单引号/双引号,行中的第一个/最后一个) 另外,尽管我使用的是Java,但如果它通常适用于正则表达式,那么答案可能会帮助更多的人。根据XHTML标准,这些差异其实并不重要 换句话说,它们是完全相同的东西
- 博主:
(内容优先,名字后,是的,单引号!) - WordPress:
(先命名,后内容)
另外,尽管我使用的是Java,但如果它通常适用于正则表达式,那么答案可能会帮助更多的人。根据XHTML标准,这些差异其实并不重要 换句话说,它们是完全相同的东西 同样,如果你用单引号替换双引号也是一样的 “规范化”xml文档的典型方法是使用一些将文档视为其信息集表示的API对其进行裁剪。DOM和SAX风格的API都是这样工作的
如果您想手工(或使用正则表达式)解析它们,您必须在代码中复制所有这些内容,在我看来,这是不实际的。实际上,您可能应该使用某种HTML解析器,在那里您可以检查页面DOM中的每个节点(以及节点属性)。我已经有一段时间没有使用过这些函数了,所以我不知道它们的优缺点,但这里有一个列表,答案是:不要使用正则表达式 真的。使用SGML解析器,或者如果您碰巧知道它是有效的XML,则使用XML解析器(可能几乎永远不会是真的)。你肯定会把事情搞砸,浪费大量的时间去做正确的事情。只需使用已经可用的内容。注意:单引号(即使没有引号,如果该值不包含空格)根据上下文是有效的。引述: 默认情况下,SGML要求使用双引号(ASCII十进制34)或单引号(ASCII十进制39)分隔所有属性值。。。在某些情况下,作者可以指定不带引号的属性值
另外,不要忘了属性的顺序可以颠倒,其他属性也可以出现在标记中。好的,既然您正在寻找语言不可知论者,那么您可以尝试类似于
/
的正则表达式,并从中获取结果,解析出您正在寻找的特定值。我绝对不是正则表达式专家,所以可能有更好的方法,但在使用工具时,我匹配了您提供的两个字符串。您可能想尝试一下Java。很容易进行实验,看看解析是否提供了您想要的内容 如果您必须使用正则表达式,这里有一个正则表达式来获取内容部分:
content\s*=\s*['"].*?['"]
返回
content = "blogger"
及
分别。我不是正则表达式专家,但当你在中给出例子时,它会得到这些
一旦你明白了这一点,你就可以得到引号之间的所有内容,不管你选择的是另一个正则表达式(在这一点上是不道德的)还是仅仅是在字符上循环。如果你使用java,你可能想看一看,这是一个SAX兼容的解析器,用于“[parsing]HTML,因为它是在野外发现的”
content='Worpress.com'