当前位置: 首页 > 面试题库 >

检测并从字符串中提取网址?

宗政文彬
2023-03-14
问题内容

这是一个简单的问题,但是我不明白。我想检测字符串中的url,然后将其替换为较短的url。

我从stackoverflow找到了这个表达式,但是结果仅仅是 http

Pattern p = Pattern.compile("\\b(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]",Pattern.CASE_INSENSITIVE);
        Matcher m = p.matcher(str);
        boolean result = m.find();
        while (result) {
            for (int i = 1; i <= m.groupCount(); i++) {
                String url=m.group(i);
                str = str.replace(url, shorten(url));
            }
            result = m.find();
        }
        return html;

有更好的主意吗?


问题答案:

m.group(1)为您提供第一个匹配组,即第一个捕获括号。这是(https?|ftp|file)

您应该尝试查看m.group(0)中是否有内容,或者用括号将所有模式括起来,然后再次使用m.group(1)。

您需要重复查找功能以匹配下一个并使用新的组数组。



 类似资料:
  • 我正在编写一个程序,其中用户输入以下格式的字符串: 我需要检查字符串中是否有数字 然后只提取数字。 如果我使用或,程序在字符串中找不到数字,无论输入是什么,但仅在只有数字时才有效。 我可以使用什么作为查找和提取的解决方案?

  • 我有以下字符串 从上面,我需要提取下面的文字 第一个数字和文本之间总是有一个空格,所以2129和This is page1之间有一个空格。有时第一个数字被省略,就像2129不见了。文本和下一个数字之间总是有一个空格,所以在This is a Page1和6754001之间有一个空格,有时可能有两个空格。我只需要提取这些线这些线总是从空格开始,所以它可以 它们的后面总是有一个空格,有时是一个空格,有

  • 所谓字符串,指的就是字符的序列或者“串”。我们要在字符串上执行的第一个操作是提取所有字符中的一个。C++使用方括号([和])执行该操作: apstring fruit = "banana"; char letter = fruit[1]; cout << letter << endl; 表达式fruit[1]表明我们要从字符串变量fruit中取得编号为1的字符,并将结果保存在字符变量letter

  • 问题内容: 我想从包含数字和字母的字符串中提取数字: 我想在这里获取号码或任何其他号码。 问题答案:

  • 问题内容: 我正在尝试找到一种可靠的解决方案,以从字符串中提取URL。我有一个站点,用户可以在其中回答问题,并且可以在源框中输入他们的信息源,并允许他们输入网址。我想提取该URL并使其成为超链接。类似于Yahoo Answers的操作方式。 有谁知道可以做到这一点的可靠解决方案? 我发现的所有解决方案都适用于某些URL,但不适用于其他URL。 谢谢 问题答案: 约翰·格鲁伯(John Gruber

  • 问题内容: 我在JavaScript中有一个字符串,例如“#box2”,我只想从中获得“ 2”。 尝试过: 它仍然在警报中返回#box2,我该如何使其正常工作? 它需要容纳末尾附加的任何长度的数字。 问题答案: 对于此特定示例, 在一般情况下: 由于这个答案由于某种原因而受到欢迎,因此有一个好处:正则表达式生成器。