Java Regex匹配url有/无http或有/无www

时间:2015-01-03 14:24:11

标签: java regex

请问有人告诉我如何在字符串中匹配这些类型的网址?

例如:

example.com
www.example.com
http://example.com
https://www.example.com
example.com/exam1/exam.php
example.com/exam
...

实际上,我需要检测您可以在Twitter上以纯文本形式查看的所有形式的URL。

我试图通过谷歌找到一些正则表达式,但我找不到适合Java中所有类型的东西。

更新:也许我不太精确 - 我需要用纯文本找到所有这些类型的网址并用一些标记替换它们。例如:status.replaceAll(yourRegex,“ URL ”);

谢谢!

3 个答案:

答案 0 :(得分:2)

^(?:https?:\/\/)?(?:www\.)?[a-zA-Z0-9./]+$

试试这个。看看演示。

https://www.regex101.com/r/fG5pZ8/24

使用

^(?:https?:\/\/)?(?:www\.)?example\.[a-zA-Z0-9./]+$

如果你想匹配example.的东西。参见演示。

https://www.regex101.com/r/fG5pZ8/26

答案 1 :(得分:1)

这应该可以很好地匹配任何网址:

(https?://)?\w+(\.\w+)+(/\w+)*(/\w+\.\w+)?(\?[\w%&=.]*)*(?=[^\w.?&%=])

请参阅demo

它也匹配任意数量的路径部分,例如`example.com/a/b/c?x=y&a=b

答案 2 :(得分:0)

您似乎正在尝试匹配包含example.com的各种网址。你可以使用这个正则表达式:

\b(https?://)?(www\.)?example\.com\S*\b

在Java代码中:

Pattern p = Pattern.compile("\\b(https?://)?(www\.)?example\.com\\S*\\b");

RegEx Demo