我第一次尝试使用RE使我陷入困境。我通过搜索-Regex插件在Wordpress网站上使用Regex,需要匹配一个特定的“隐藏在一堆html代码中的”. HTML示例:
provide brand-strengthening efforts for the 10-school conference.  </p>
<p>
<a href="http://www.learfield.com/oldblog/.a/6a00d8345233fa69e201157155a6fc970c-pi">
<img alt="MOvalleyConf500"
border="0"
class="at-xid-6a00d8345233fa69e201157155a6fc970c"
src="http://www.learfield.com/oldblog/.a/6a00d8345233fa69e201157155a6fc970c-800wi"
style="border: 1px solid black; margin: 0px; width: 502px; height: 384px;"
title="MOvalleyConf500" />
</a>
</p>
<p>The photo above在上面的例子中,有三个目标
6a00d8345233fa69e201157155a6fc970c-pi"
6a00d8345233fa69e201157155a6fc970c"
6a00d8345233fa69e201157155a6fc970c-800wi"我使用的Regex是/6a00d834.*?"/,它定位它们,但是我只想匹配结束的",而不是整个字符串。这些图片缺少它们的文件扩展名,所以我需要替换“使用.jpg”的结尾,我理解表达式的替换部分,这是我遇到问题的初始匹配。
我有一堆这样的(221),所有的目标都以6a00d834开头,然后一些随机字母数字以"结尾。
感谢你的洞察力。谢谢。
编辑从OP的评论中添加了:实际上它是在Wordpress站点上使用一个插件(REGEX)来查询和替换SQL中的数据。我可以使用任何与Perl兼容的正则表达式。(编辑注意--根据插件的不同,这很可能实际上不是使用Perl,而是使用PHP的PCRE实现。)
发布于 2009-08-01 14:16:26
可以在匹配的同时进行字符串替换。既然您使用的是PHP,请使用替换
$newstring = preg_replace("/(6a00d834.*?)(\")/", "\\1.jpg\\2", $oldstring)这会将匹配分为两组,然后在它们之间插入“.jpg”。
对于wordpress regex插件,对匹配字符串使用/(6a00d834.*?)(")/,然后对替换字符串使用\1.jpg\2。
发布于 2009-08-01 13:38:26
这不管用吗?
/(6a00d834.*?)"/编辑:,您在评论中说,您希望用.jpg"替换";在这种情况下,这个regexp可能会起作用:
/6a00d834.*?(")/但是,最好的方法可能是使用我提供的第一个regexp,并使用如下所示的替换字符串:
'\\1.jpg"'当然,必须将\\1替换为用于反向引用的任何特定regexp引擎。
发布于 2009-08-01 13:46:58
我假设您希望在6a00d834之后提取所有内容,直到第一个后续"。所以试试这个:
/6a00d834([^"]*)"/第一组的匹配将超过您要寻找的字符串。
https://stackoverflow.com/questions/1216600
复制相似问题