如果你在寻找一种健壮的方式来解析 HTML,那么正则表达式通常不是正确的选择,因为如今互联网上的 HTML 页面结构非常脆弱——常见的错误比如缺少结束标签、标签不匹配、忘记为属性加引号等,都会导致本来写得很好的正则表达式失效。
相比之下,你可以使用像 Beautiful Soup 或 html5lib(Python 中的库)或 phpQuery(PHP)这样的工具库,它们不仅可以解析 HTML,还可以让你方便地遍历 DOM 结构。
话虽如此,在一些情况下,如果你只是在编辑器中快速匹配标签或标签内容,而且你可以确认输入是干净且受控的,那么使用正则表达式是一个不错的工具。正如你在下面的例子中看到的,有一些情况你需要特别小心,比如属性中有额外转义引号,或标签嵌套等。
请继续为下面的示例编写正则表达式。
| Task | Text | Capture Groups | |
| 捕获 | <a>This is a link</a> | a | ![]() |
| 捕获 | <a href='https://regexone.com'>Link</a> | a | ![]() |
| 捕获 | <div class='test_style'>Test</div> | div | ![]() |
| 捕获 | <div>Hello <span>world</span></div> | div | ![]() |
| 提示 | 使用合适的库来解析 HTML 是最佳实践,但如果只是查找简单的标签名,你可以使用表达式 <(\w+)。你也可以捕获标签内容,使用 >([\w\s]*)<,或者如果需要的话,还可以捕获属性值,比如 ='([\w://.]*)'。 |