Java 从字符串中剥离URL
如果URL以Java 从字符串中剥离URL,java,regex,Java,Regex,如果URL以*://或www.*开头,但在将正则表达式添加到预先存在的复杂模式时遇到问题,我想从字符串中删除所有形式的URL 目前,我使用 public static String censorUrls(String str) { String urlPattern = "((https?|ftp|gopher|telnet|file|Unsure|http):((//)|(\\\\))+[\\w\\d:#@%/;$()~_?\\+-=\\\\\\.&]*)";
*://
或www.*
开头,但在将正则表达式添加到预先存在的复杂模式时遇到问题,我想从字符串中删除所有形式的URL
目前,我使用
public static String censorUrls(String str) {
String urlPattern = "((https?|ftp|gopher|telnet|file|Unsure|http):((//)|(\\\\))+[\\w\\d:#@%/;$()~_?\\+-=\\\\\\.&]*)";
Pattern pattern = Pattern.compile(urlPattern,Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(str);
int i = 0;
while ( matcher.find() ) {
str = str.replaceAll(matcher.group(i), "****").trim();
i++;
}
return str;
}
然而,这对可能只是
www.google.com
或google.com
甚至www3.site.com
的URL没有帮助。我记不起这是从哪里来的,但你可以试试
如果是中字符串匹配或不是中字符串匹配,则可以使用此字符串。它使用空白边界<代码>(?和
(?!\S)
,将在锚点匹配位置也一样 原始:
(?i)(
串接:“(?i)(?你怎么知道google.com
是一个URL?是$12.50
一个URL吗?从技术上讲,www.example.com
不是URL。URL需要协议。文件或文件夹可能会遵循这种模式而不受惩罚。另外,为什么在第一个https
之后会有?
?最后,所有那些反斜杠-你在看吗对于Windows模式?正确的URL使用前斜杠,即使在Windows上也是如此。我理解你的意思。但是,我宁愿检查拼写错误,也不愿将URL传递给孩子们。而且我使用的模式是有目的的。我甚至不确定它的确切含义(在模式结束时)这些反斜杠又一次来自不是我创建的原始代码。此外,当我删除一些反斜杠时,它会告诉我需要在Eclipse中转义。这是因为反斜杠是一个特殊字符,需要由另一个反斜杠转义。它们需要成对添加和删除。这对问题至关重要吗?目前,该函数在它只是没有删除所有类型的发布url类型,www.somesite.com
和somesite.com
被聊天系统解析为链接,并且必须剥离。它看起来确实很复杂。我试图在线测试它,Java正则表达式测试器给出了一系列错误,所以我尝试将其粘贴到Eclips中没有错误,所以我决定编译并运行。它没有给出任何错误,但似乎没有删除任何类型的URL。http://google.com
或其他。嗯,它与http://google.com
您是否尝试用空字符串替换?哦,嘿,没关系。它工作正常。问题是它太长了g我无意中在屏幕外加入了一个角色,但我没有意识到。非常感谢。看起来效果不错。如果你想在在线测试中使用它,我添加了一个原始版本。谢谢。我不得不说,这显然比我意识到的要难得多。
(?i)
(?<! \S )
(?! mailto: )
(?:
[a-z]* :
\/\/
)?
(?:
\S+
(?: : \S* )?
@
)?
(?:
(?:
(?:
[1-9] \d?
| 1 \d\d
| 2 [01] \d
| 22 [0-3]
)
(?:
\.
(?: 1? \d{1,2} | 2 [0-4] \d | 25 [0-5] )
){2}
(?:
\.
(?:
[1-9] \d?
| 1 \d\d
| 2 [0-4] \d
| 25 [0-4]
)
)
| (?:
(?: [a-z\x{a1}-\x{ffff}0-9]+ -? )*
[a-z\x{a1}-\x{ffff}0-9]+
)
(?:
\.
(?: [a-z\x{a1}-\x{ffff}0-9]+ -? )*
[a-z\x{a1}-\x{ffff}0-9]+
)*
(?:
\.
(?: [a-z\x{a1}-\x{ffff}]{2,} )
)
)
| localhost
)
(?: : \d{2,5} )?
(?: \/ [^\s]* )?
(?! \S )