我正在尝试使用
grep -o "javascript:add2BasketProd.*?jpg"
从
中提取字符串javascript:add2BasketProd('xKonfGFJsakj', 'Tattoo-Bubble-Gum-7cm-Bubble-Gum.jpg')Funny-Glasses-and-Teeth-Toy-Candy-TC-747-.jpg
但它没有输出。所以我将代码更改为以下内容,但我得到的输出是整个字符串,直到jpg
的第一个匹配。
grep -o "javascript:add2BasketProd.*\?jpg"
我的预期输出是:
javascript:add2BasketProd('xKonfGFJsakj', 'Tattoo-Bubble-Gum-7cm-Bubble-Gum.jpg
有人可以提出解决方案吗?
答案 0 :(得分:2)
您可以使用egrep
获得高级正则表达式功能:
s='javascript:add2BasketProd('xKonfGFJsakj', 'Tattoo-Bubble-Gum-7cm-Bubble-Gum.jpg')Funny-Glasses-and-Teeth-Toy-Candy-TC-747-.jpg'
egrep -o "javascript:add2BasketProd.*?jpg" <<< "$s"
javascript:add2BasketProd(xKonfGFJsakj, Tattoo-Bubble-Gum-7cm-Bubble-Gum.jpg
答案 1 :(得分:2)
grep
使用POSIX样式的正则表达式,它总是贪婪的。如果你的grep支持-P
标志,你可以使用它来启用支持非贪婪匹配的perl样式正则表达式:
grep -oP "javascript:add2BasketProd.*?jpg"
在Linux上使用的GNU grep
支持-P
。 Mac OSX grep
没有。