如何使用类似字符串的正则表达式

时间:2010-09-22 10:52:09

标签: ruby regex

我有这个字符串

[url=test.php]test[/url]

[url=http://test.php]text[/url]

我想要一个正则表达式得到这个

[url=http://test.php]text[/url]

示例:

之前:

str = "[url=test.php]text[/url]"
str.gsub(/\[url=(.*?)\](.*?)\[\/url\]/,'[url=http://\1]\2[/url]')
=> "[url=http://test.php]text[/url]"

问题:

str = "[url=http://test.php]text[/url]"
str.gsub(/\[url=(.*?)\](.*?)\[\/url\]/,'[url=http://\1]\2[/url]')
=> "[url=http://http://test.php]text[/url]"

所以..两个“http://”

任何想法?

感谢

1 个答案:

答案 0 :(得分:0)

感谢您澄清问题。

如果链接的网址不是,那么您需要一个仅匹配[url] BBCode标记的正则表达式。

http

应该有效:

\[url=\s*(?!http)([^\]]+)\](.*?)\[/url\]

说明:

str.gsub(/\[url=\s*(?!http)([^\]]+)\](.*?)\[\/url\]/,'[url=http://\1]\2[/url]')