我想搜索并列出(或多个)HTML页面中的所有图像网址。使用Regexr.com我能够将这个正则表达式放在一起:src=".*(\.png|\.jpg|\.jpeg|\.gif)"
在 regexr.com上运行正常,但在命令行上没有。当我运行grep -o 'src=".*(\.png|\.jpg)' index.html
时,上面的正则表达式得到零结果这是javascript正则表达式和我不知道的grep正则表达式之间的区别吗?
答案 0 :(得分:2)
默认情况下,grep
使用较旧的,功能较弱的正则表达式引擎。使用egrep
变体将提供与JavaScript提供的非常相似的行为。
此模式适用于我(调整原始grep
):
egrep -o 'src=".*(\.png|\.jpg)' index.html
或(更好),只需使用-E
标志:
grep -E -o 'src=".*(\.png|\.jpg)' index.html
-E将grep切换到特殊模式,以便将表达式计算为ERE(扩展正则表达式),而不是 正常模式匹配
-E, - extended-regexp将PATTERN解释为扩展正则表达式(ERE,见下文)。 (-E由POSIX指定。)