文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
9.1 匹配标签
在开始对诗文进行匹配之前,先讨论一下如何匹配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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论