Regex 如何将内部链接与正则表达式匹配?
我正在尝试构建一个正则表达式,它将匹配其中不包含单词“Regex 如何将内部链接与正则表达式匹配?,regex,Regex,我正在尝试构建一个正则表达式,它将匹配其中不包含单词“样式表””的每一行,并具有一个“a href”值,该值不以http或www开头 这就是我走了多远,但似乎没有达到我的目的: grep -rin "href=\"\/*\/*\/|^((?!stylesheet).)*$" *.html 目标是抓住这一点: <a href="/api_supplier/"> <a href="/other-internal-link/abc/"> 此正则表达式可以完成以下工作: ^(
样式表”
”的每一行,并具有一个“a href
”值,该值不以http
或www
开头
这就是我走了多远,但似乎没有达到我的目的:
grep -rin "href=\"\/*\/*\/|^((?!stylesheet).)*$" *.html
目标是抓住这一点:
<a href="/api_supplier/">
<a href="/other-internal-link/abc/">
此正则表达式可以完成以下工作:
^(.*a href)((?!http|www|stylesheet).)*$
此正则表达式可以完成以下工作:
^(.*a href)((?!http|www|stylesheet).)*$
将
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">
将
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">
你能给我举个例子吗?你可能想看看这个作业的语法分析器。谢谢,HTML和正则表达式不是好朋友。使用解析器,它更简单、更快、更易于维护。@Toto-Well,在一般情况下当然是正确的;对于这个特定的用例,当然是完全可行的(因为我们可以用“href=”in a value etc)排除病理性案例。您可以给出一个在ITS中使用样式表的行的示例吗?您可能想看看这个作业的解析器,Sure补充道。谢谢,HTML和正则表达式不是好朋友。使用解析器,它更简单、更快、更易于维护。@Toto-Well,在一般情况下当然是正确的;对于这个特定的用例,当然是完全可行的(因为我们可以用“href=”in a value etc)排除病理情况。我对正则表达式的所有风格都不熟悉。例如,grep无论如何都会在单行上工作,因此我假设
^
和$
锚定是冗余的(因此^
后面的*
)。您是否需要它们(例如在Perl中)?这不适用于:
我认为在使用grep时,^和$的有用性是正确的,但在我看来,.*仍然是必需的。它在这里捕捉“a href”之前的任何内容,这可能只是一个简单的“@Toto-Hum,你什么意思?他不希望在其中包含样式表的行,所以它会像预期的那样被忽略,对吗?不,不会。只有在href
之后,您才测试是否缺少steelesheet
,我不熟悉所有类型的正则表达式。例如,grep无论如何都会在单行上工作,因此我假设^
和$
锚定是冗余的(因此^
后面的*
)。您是否需要它们(例如在Perl中)?这不适用于:
我认为在使用grep时,^和$的有用性是正确的,但在我看来,.*仍然是必需的。它在这里捕捉“a href”之前的任何内容,这可能只是一个简单的“@Toto-Hum,你什么意思?他不希望在其中包含样式表的行,所以它会像预期的那样被忽略,对吗?不,不会。只有在href
之后,您才可以测试是否缺少steelesheet
,这真是太好了,谢谢。如何修改它使其成为一个内联更改?这真的很好,谢谢。如何修改它以使其成为内联更改?
~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">
perl -i -ape 's~^(?!.*stylesheet).*?\bhref="/[^"]+\K~index.html~' file.txt