【发布时间】:2011-04-15 05:16:01
【问题描述】:
我正在尝试修改http://daringfireball.net/2010/07/improved_regex_for_matching_urls 的 url 匹配正则表达式,使其不匹配任何已经是有效 URL 标记的一部分或用作链接文本的内容。
例如,在下面的字符串中,我想匹配http://www.foo.com,而不是http://www.bar.com 或http://www.baz.com
www.foo.com <a href="http://www.bar.com">http://www.baz.com</a>
我试图添加一个否定的前瞻来排除后跟“或http://www.bar.co 和 http://www.baz.co作为匹配项。
我看不出我做错了什么......有什么想法吗?
\b((?:[a-z][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))(?!["<])
这也是一个更简单的例子:
((((ht|f)tps?:\/\/)|(www.))[a-zA-Z0-9_\-.:#/~}?]+)(?!["<])
【问题讨论】:
-
我一直认为使用正则表达式测试工具会有所帮助! gskinner.com/RegExr
-
谢谢。我一直在使用其中之一。我也会试试这个,看看它是否提供任何其他提示。
标签: regex url pattern-matching