java - String ReplaceAll 方法不起作用

标签 java regex

我正在使用这种方法来解析一些 HTML 中的纯文本 URL 并使它们成为链接

private String fixLinks(String body) {
    String regex = "^(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]";
    body = body.replaceAll(regex, "<a href=\"$1\">$1</a>");
    Log.d(TAG, body);
    return body;
}

但是 HTML 中没有 URL 被替换。正则表达式似乎与其他正则表达式测试器中的 URL 匹配。怎么回事?

最佳答案

^ anchor 意味着正则表达式只能匹配字符串的开头。尝试将其删除。

另外,看起来你的意思是 $0 而不是 $1,因为你想要整个匹配而不是第一个捕获组,即 (https? |ftp|文件).

总而言之,以下对我有用:

private String fixLinks(String body) {
    String regex = "(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]";
    body = body.replaceAll(regex, "<a href=\"$0\">$0</a>");
    Log.d(TAG, body);
    return body;
}

关于java - String ReplaceAll 方法不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8317364/

相关文章:

javascript - 这安全吗? eval 或 new 函数用于简单算术表达式

java - Java 中的 hasNextDouble 方法出现问题

regex - Sed 正则表达式问题

apache - 在使用 apache poi 替换 Microsoft 2007 (HWPFDocument) 文档的内容时需要帮助

java - TextView.setText()使我的应用程序在HTC One和Bluestacks上崩溃

javascript - 密码框 - 使用javascript从输入字段获取值

python - 如何在 Python 中用空字符串替换引号“和连字符?

ruby - 如果存在,则从字符串中删除前导引号和尾随引号

java - UTF-8 可以保存 UTF-16 可以保存的相同数据吗

java - Spring beans 认识