我希望将链接与正则表达式匹配,直到第一个空格或<
出现。
我试过这个正则表达式
\b(((http|ftp)(.)?\:\/\/)?(www\.)?example\.com([^\s|<]+)?)\b
但这个正则表达式的问题在于它也匹配example.com.au
。
所以我想要匹配
example.com // match
example.com/somelink/link // match
example.com.au // do not match
example.com.au/somelink/link // do not match
匹配到第一个空格或<
出现
答案 0 :(得分:1)
这是一个与http://example.com/whatever匹配但不与http://example.com.au/whatever匹配的解决方案。
/\b(((http|ftp)(.)?:\/\/)?(www\.)?example\.com(?!\.[\w\d])(\/[^\s<]*)?)\b/
对此文本进行了测试:
Match http://example.com/ but not http://example.com.au
This is a sentence about http://example.com/.
http://example.com<
http://example.com/asdf.asdf.asdf/ asdf
http://example.computer
它使用负向前瞻来明确排除example.com后跟\.[\w\d]
。
答案 1 :(得分:0)
告诉它你不想在.com
之后匹配任何点\b(((http|ftp)(.)?\:\/\/)?(www\.)?example\.com([^\s|<|\.]+)?)\b
或者更聪明地告诉你,如果之后有什么东西,你希望在.com之后出现正斜线.com
\b(((http|ftp)(.)?\:\/\/)?(www\.)?example\.com(\/[^\s|<]+)?)\b