java - 尝试创建一个正则表达式来从java中的字符串中提取网站地址,但无法正确执行

标签 java regex html-parsing

我正在尝试使用以下代码从网址中提取网站地址

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更改我的正则表达式中的某些内容吗?

我想要提取的网站类似于:

http://intelweb.xyz.kycv.kk.jj/~u0082/jbvelweb2/

最佳答案

您可能需要使用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/

相关文章:

objective-c - 不接受以数字开头的电子邮件 ID

java - ManagedScheduledExecutorService 任务能否在服务器重启或崩溃后继续存在?

java - 当两个并发线程尝试从 CopyOnWriteArrayList 中删除元素时会发生什么? java

java - 无法解析我的 Maven 项目的依赖项

ruby - 从字符串中删除不匹配的括号

javascript - 如何使用 angularjs 将样式应用于字符串中使用的分隔管道?

javascript - Parsehub 选择 Node 语法

php - 正则表达式 - 从 PHP 中的 html 字符串获取表格

php - preg_replace 添加目标 ="_blank",但排除某些实例

Java 算术异常,如何解决?