返回介绍

9.1 匹配标签

发布于 2024-01-20 21:40:46 字数 1062 浏览 0 评论 0 收藏 0

在开始对诗文进行匹配之前,先讨论一下如何匹配HTML或XML标签。有很多方式匹配标签,无论是起始标签(如<html>)还是结束标签(如</html>),但我找到一个比较可靠的方法。不论是否有属性,它都会匹配起始标签:

<[_a-zA-Z][^>]*>

以下是该表达式的解析。

· 第一个字符是左尖括号(<)。

· 在XML中元素可以以下划线字符(_)开头,而在HTML中是以ASCII范围中的大写或小写字母开头(参见9.6节)。

· 在起始字符之后,标签名称可以是零或多个除右尖括号(>)之外的任意字符。

· 该表达式以右尖括号结尾。

请用grep尝试下面的命令。对代码库中的示例DITA文件lorem.dita进行匹配:

grep -Eo '<[_a-zA-Z][^>]*>' lorem.dita

结果是:

<topic id="lorem">
<title>
<body>
<p>
<p>
<ul>
<li>
<li>
<li>
<p>
<p>

要同时匹配起始标签和结束标签,只需添加一个斜线并在之后加一个问号即可。问号使斜线成为可选匹配部分:

</?[_a-zA-Z][^>]*>

我只在这里讨论起始标签。为了让输入更美观,我常使用管道将结果传入其他工具程序:

grep -Eo '<[_a-zA-Z][^>]*>' lorem.dita | sort | uniq | sed 's/^</;s id=\".*\"/;s>$//'

该命令列出了排序后的一串XML标签名:

body
li
p
p
title
topic
ul

第10章也就是最后一章会更详细地讲解这些内容。接下来几节让我们温故知新。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文