regex - 如何将内部链接与正则表达式匹配?
问题描述
我正在尝试构建一个正则表达式,它将匹配其中不包含单词“ stylesheet
”的每一行,并且具有一个“ a href
”,其值不是以http
or开头www
。
这是我走了多远,但它似乎没有做我想要的:
grep -rin "href=\"\/*\/*\/|^((?!stylesheet).)*$" *.html
目标是这将被捕获:
<a href="/api_supplier/">
<a href="/other-internal-link/abc/">
但这不会:
<a href="http://github.com/">
<a href="www.github.com/index.html">
<a href="/other-internal-link/test/" rel="stylesheet">
我的最终目标是index.html
在每个内部链接的末尾附加“”,所以它们看起来像这样:
<a href="/api_supplier/index.html">
<a href="/other-internal-link/abc/index.html">
解决方案
index.html
附加到正确 url的 perl 方式:
~cat file.txt
<a href="/api_supplier/">
<a href="/other-internal-link/abc/">
<a href="http://github.com/">
<a href="www.github.com/index.html">
<a href="/other-internal-link/test/" rel="stylesheet">
~perl -ape 's~^(?!.*stylesheet).*?\bhref="/[^"]+\K~index.html~' file.txt
<a href="/api_supplier/index.html">
<a href="/other-internal-link/abc/index.html">
<a href="http://github.com/">
<a href="www.github.com/index.html">
<a href="/other-internal-link/test/" rel="stylesheet">
如果您想就地更换,请使用以下-i
选项:
perl -i -ape 's~^(?!.*stylesheet).*?\bhref="/[^"]+\K~index.html~' file.txt
推荐阅读
- python - 具有偶数元素的未排序列表会产生 IndexError
- java - 为许多用户选择和删除许多行(大约 24000)时 SQL Server 超时
- c# - Unity-如何做JsonConvert.DeserializeObject
- twitter-bootstrap - 如何链接引导进度条的整个部分?
- javascript - 如果要从第一个数组中删除第二个数组中不存在的对象
- java - Java - 如何从套接字附加到 jTextArea?
- html - 带有文本和点的进度条
- ios - iOS 11.4(15g77) 的设备支持文件
- java - Jsoup 去除字符串中的多个空格
- visual-studio-code - 使用 vscode 进行远程调试,console.log 有效,但 stdout 被抑制