我正在使用这种方法来解析一些 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/