gpt4 book ai didi

java - JavaScript 和 Java 之间正则表达式模式的差异?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:22:48 26 4
gpt4 key购买 nike

在 JavaScript 中,我有以下内容:

function replaceURLWithHTMLLinks(text) {
var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
return text.replace(exp,"<a href='$1'>$1</a>");
}

它将输入字符串中的所有 URL 替换为一个 URL 版本,该 URL 周围环绕着 anchor 标记以将其转换为链接。我正在尝试使用以下函数在 Java 中复制此功能:

private String replaceURLWithHTMLLinks(String text) {
String pattern = "/(\\b(https?|ftp|file):\\/\\/[-A-Z0-9+&@#\\/%?=~_|!:,.;]*[-A-Z0-9+&@#\\/%=~_|])/i";
return text.replaceAll(pattern, "<a href=\"$1\">$1</a>");
}

然而,虽然它在 JavaScript 中运行良好,但在 Java 中找不到任何匹配项,即使对于相同的输入字符串也是如此。我是否需要更改模式中的某些内容,或者发生了什么?

最佳答案

对于 Java 示例,您需要去掉表达式周围的斜杠和末尾的 i。您可以单独指定 i 标志。所以 JavaScript 的 /blarg/i 会变成 "(?i)blarg"

你的代码会变成这样:

private String replaceURLWithHTMLLinks(String text) {
String pattern = "(?i)(\\b(https?|ftp|file):\\/\\/[-A-Z0-9+&@#\\/%?=~_|!:,.;]*[-A-Z0-9+&@#\\/%=~_|])";
return text.replaceAll(pattern, "<a href=\"$1\">$1</a>");
}

关于java - JavaScript 和 Java 之间正则表达式模式的差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8629039/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com