请问有人告诉我如何在字符串中匹配这些类型的网址?
例如:
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 ”);
谢谢!
答案 0 :(得分:2)
^(?:https?:\/\/)?(?:www\.)?[a-zA-Z0-9./]+$
试试这个。看看演示。
https://www.regex101.com/r/fG5pZ8/24
使用
^(?:https?:\/\/)?(?:www\.)?example\.[a-zA-Z0-9./]+$
如果你想匹配example.
的东西。参见演示。
答案 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");