替换www.example.com w / <a href="http://www.example.com">www.example.com</a>

时间:2009-10-13 20:26:42

标签: html regex textmate replace

我不是很擅长正则表达式,但我需要从这个

转换下面的例子
<li>Creations by Carol - www.driedfloralcreations.com</li>

<li>Creations by Carol - <a href="http://www.driedfloralcreations.com" rel="external">www.driedfloralcreations.com</a></li>

4 个答案:

答案 0 :(得分:2)

在PHP中这个怎么样?

$string = '<li>Creations by Carol - www.driedfloralcreations.com</li>';
$pattern = '/(www\.[a-z\d-\.]+\.[a-z]+)/i';
$replacement = '<a href="http://$1" rel="external">$1</a>';
echo preg_replace($pattern, $replacement, $string);

假设您的链接始终是www.something.extension。

答案 1 :(得分:2)

如果您只是在<li>元素中查找格式与问题中的网址相同的网址,那么它应该比许多其他建议的解决方案简单得多。您不需要验证您的网址,我认为您只需要获取网站名称和网址列表,然后将网址转换为链接。

您的搜索模式可能是:

<li>(.+) - (https?:\/\/)?(\S+?)<\/li>

替换模式将是:

<li>$1 - <a href="(?2:$2:http\://)$3" rel="external">$3</a></li>

刚刚在TextMate中测试了find / replace out,它运行得很好。如果它不存在,它会加http://,否则假设-之后的任何内容都是URL,只要它不包含空格。

为了测试正则表达式,Rubular是一个很棒的工具。您可以粘贴一些文本,它会在您输入正则表达式时显示匹配的内容。它是一个ruby工具,但TextMate使用与ruby相同的正则表达式语法。

答案 2 :(得分:1)

您必须非常清楚需要多少信息才能使正则表达式避免误报。

例如,模式www.something.somethingelse足够吗?文件中还有其他www会被抓住吗?

也许&lt; li&gt;东西 - somethingelse&lt; / li&gt;是正确的匹配。如果不知道你的整个档案,我们无法猜测。可能还有其他&lt; li&gt;在那里,你不想改变。

答案 3 :(得分:-2)

www\.[a-zA-Z0-9_-]+\.(fr|com|org|be|biz|info|getthelistsomewhere)