grep rexExp 中撇号的用法

grep rexExp 中撇号的用法

我最近开始学习 regExp 并在 shell 中找到了一个很好的例子,使用 grep 只提取锚标记 url 例如<a href="unix.stackexchange.com"></a>

grep - 'href="[^"]*"' *.html

如果我得到正确的'href="[^"]*"'意思是找到href="0-infinity character that does not have " in it "但不必*在引号之外?

我很困惑。用于' '转义字符的特殊含义。所以*根本不应该工作 +*.html应该意味着 =0-infinte characters以 .html 结尾 = 那么一个 grep 中是否可以有两个 ragExp ?

答案1

首先,输出是:

% grep -o 'href="[^"]*"' <<<'<a href="unix.stackexchange.com"></a>'
href="unix.stackexchange.com"
  • 正则表达式模式是href="[^"]*",它被放在单引号内以防止它被 shell 解释

  • *.htmlgrep是您要对其执行 Regex/ 操作的文件,这*是一个 shell 文件名生成模式(匹配任意数量的字符),该模式将导致当前目录中以结尾的所有文件.html

  • href="将按字面匹配

  • [^"]*将匹配子字符串直到 next "*匹配前面标记的零次或多次出现,[^"]因此如果两个 s 之间没有字符,"那么它将产生一个空字符串

  • "匹配文字"

相关内容