正则表达式用于识别HTML标签(仅作为正则表达式重复学习练习!!)

4
我非常非常新手,对于正则表达式一直都是避之不及。到目前为止,我已经尽力避免使用它了。但现在一个个人项目促使我去学习它。
因此,我开始学习,并查看此处的教程
目前我在这里:http://www.regular-expressions.info/repeat.html 我的问题是:
教程中说,<[A-Za-z][A-Za-z0-9]*>可以匹配HTML标记。
但是,它不会匹配无效的HTML标签,比如<h11><h111>吗?同时,它又怎么匹配闭合标签?
编辑 - 我的问题很具体。我指的是一个特定教程中的一个特定示例,以澄清我的重复理解是否正确。再次强调,我不关心使用正则表达式解析HTML。

阅读此答案:https://dev59.com/X3I-5IYBdhLWcg3wq6do#1732454 - jpw
你没有回答我的问题。我不是在使用正则表达式来“匹配HTML”。那不是我的目的。我把这个当作一个练习来学习正则表达式。忘掉HTML吧。我的问题是,如果这个教程中的例子的目的是匹配<h1> - <h6>,那么它怎么正确呢?难道它不会同时匹配<h11>和<h111>吗? - DS.
2
回答你的问题:是的,它会匹配<h111>,但不会匹配闭合标签。 - user1864610
@MikeW 谢谢,所以我的理解是正确的。很抱歉我不得不求助于SO。教程网站本身似乎没有评论/论坛部分。 - DS.
3
不是复制。我的问题非常具体。我提到了一个特定教程中的一个特定示例,以澄清我对重复的理解是否正确。再次强调,我重申,我不关心使用正则表达式进行HTML解析。 - DS.
2个回答

6

既然您正在尝试学习正则表达式,我认为回答您的问题不会有任何伤害:

1)是的,它也会匹配无效的标签,因为它是任意字母后跟另一个字母或数字的零个或多个匹配项。

2)它将不会匹配闭合标签(其中必须搜索是否存在 /)。

还有一点需要注意:人们曾经用来查找文档中的html标签的方法是查找开放和闭合括号的模式,如下所示:

<\/?[^>]*>

那是开括号,可选的斜杠,(除了闭括号之外的任何东西)重复一遍,然后是闭括号。当然,我不建议任何人这样做。这只是留在这里作为一个练习。


谢谢!这很有帮助。我猜人们太急于在这里对问题进行评判,而不是真正尝试理解正在被问的内容。 - DS.
在这个特定的话题上我们达成了一致。正则表达式和HTML的事情可能有些混淆。你的问题似乎不是传统意义上的(“我试图学习正则表达式来爬取网页”,是的,我同意这不是正确的方法)。 - erewok

0
教程中说 <[A-Za-z][A-Za-z0-9]*> 可以匹配 HTML 标签。 但是它不也会匹配无效的 HTML 标签,比如 - 或者 ? 而且它怎么匹配闭合标签呢?
是的,它可以匹配 <h11><X098wdfhfdshs98fhj2hsdljhkvjnvo9sudvsodfih23234osdfs>
如果你只想匹配一个字母后面跟着一个可选的数字,这样你就可以匹配 <h1>,那么你需要使用 <[A-Za-z][0-9]?>

还有其他正确的方式吗?- <[A-Za-z]*[1-6]{0,1}> - DS.
@DS: ?еПѓдї•жЫњдї£{0,1}гАВељУзДґпЉМеЃГдєЯеПѓдї•еМєйЕН<z3>жИЦиАЕ<q7>гАВ - Tim Pietzcker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接