我正在尝试使用以下代码从网址中提取网站地址
public String getWebSiteAddress(String text)
{
Pattern p = Pattern.compile("\\b([a-z0-9]+(-[a-z0-9]+)*\\.)+[a-z]{2,3}\\b");
//Pattern p = Pattern.compile("^http\\:/[a-zA-Z0-9\\-\\.]+\\.[a-zA-Z]{2,3}(/\\S*)?$");
System.out.println("\\b([a-z0-9]+(-[a-z0-9]+)*\\.)+[a-z]{2,3}\\b");
Matcher m = p.matcher(text);
if(m.matches())
{
System.out.println("got it");
return m.group(0) ;
}
else
{
System.out.println("ddnt get");
return "";
}
}
事实证明这段代码在 regexBuddy 中完美运行,但在 JAVA 中运行正常 任何人都可以帮助我我的正则表达式有什么问题或者我应该根据java更改我的正则表达式中的某些内容吗?
我想要提取的网站类似于:
最佳答案
您可能需要使用matcher的find()方法。
public String getWebSiteAddress(String text)
{
Pattern p = Pattern.compile("\\b([a-z0-9]+(-[a-z0-9]+)*\\.)+[a-z]{2,3}\\b");
Matcher m = p.matcher(text);
if (m.find()) {
System.out.println("got it");
return m.group(1) ;
}
else
{
System.out.println("didnt get");
return "";
}
}
显然只有整个字符串与正则表达式匹配时匹配才有效。
关于java - 尝试创建一个正则表达式来从java中的字符串中提取网站地址,但无法正确执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9399746/