Regex 在这种情况下,正则表达式使用什么?

Regex 在这种情况下,正则表达式使用什么?,regex,pipe,yahoo,Regex,Pipe,Yahoo,你有什么想法如何改变这个项目吗。Yahoo.pipes中的说明此链接 <img src="http://mysite.com/img/pc/image.gif" class="big" style="background-image:url(http://mysite.com/pre_big_crop/pic/pc/gallery/dd/c1/example.jpeg);" alt="" title=""> 对此 <img src="http://mysite.com/p

你有什么想法如何改变这个项目吗。Yahoo.pipes中的说明此链接

<img src="http://mysite.com/img/pc/image.gif" class="big" style="background-image:url(http://mysite.com/pre_big_crop/pic/pc/gallery/dd/c1/example.jpeg);" alt="" title="">

对此

<img src="http://mysite.com/pre_big_crop/pic/pc/gallery/dd/c1/example.jpeg"/>


使用正则表达式。

我不知道正则表达式管道使用什么变体,所以我将使用.NET变体,您可以根据需要调整任何语法。应该很近了

搜索:

<img[^>]+url\(
([^\)]+)
\)[^>]+>


加入队伍。第1行在CSS样式属性中找到url参数之前的图像标记。第2行匹配背景图像URL并捕获它。第3行与图像标记的其余部分相匹配。

下面是一个非常简单的正则表达式,可以实现您使用PERL风格的正则表达式所需要的:

<img src="$1" />


编辑:没有看到richardtallent的答案,非常相似的应用程序只是一个不同的实现。

是的,它们是相似的,但在您的模式中有一些小问题:如果输入在同一行上有多个IMG标记,则只会捕获最后一个标记的背景图像。此外,如果该行恰好在最后一个背景url之后包含另一个
,则捕获将包含不止一个url。这两种情况都是由于
*
过于贪婪(至少在.NET中是这样,我已经很久没有在Perl中使用任何正则表达式了)。
<img.*background-image:url\((.*)\);.*>
<img src="$1">