使用sed和regex搜索下一个字符

Maa*_*man 0 regex unix batch-file

我得到了一个带有以下网址的图片:

<img alt="" src="http://www.example-site.com/folder_with_underscore/folder-with-dash/3635/0/235/NumBerS_and_Uc/image.png" />

我正在使用 sed "s///g"

所以我正在尝试的是替换src值,但这大部分时间是完全不同的.

有没有办法使用 sed "s/src=\" (until first " ) / new url /g"

额外信息:

我在Windows和PATH=C:\cygwin\bin我的.bat文件中使用Cygwin

Sha*_*hin 5

[^"]将匹配任何字符",所以你可以使用:

 sed 's/src="[^"]*"/src="NEWURL"/g'
Run Code Online (Sandbox Code Playgroud)

例:

[me@home]$ echo '<img alt="" src="http://www.example-site.com/folder_with_underscore/folder-with-dash/3635/0/235/NumBerS_and_Uc/image.png" />' | sed 's/src="[^"]*"/src="http:\/\/stackoverflow.com"/g'
<img alt="" src="http://stackoverflow.com" />
Run Code Online (Sandbox Code Playgroud)

请注意,这将匹配,直到第一次出现"可能是你想要的.如果你真的想要匹配到最后一次出现",你可以简单地做:

 sed 's/src=".*"/src="NEWURL"/g'
Run Code Online (Sandbox Code Playgroud)

正则表达式是贪婪的,所以将占用尽可能多的特征,从而匹配到最后一次出现".虽然这也适用于上面的示例,但如果输入中还有其他内容也包含,则它将不会按预期运行".