Dou*_*ugh 12 java regex url grouping replace
我正在尝试将包含某些URL的String替换为与浏览器兼容的链接URL.
我的初始String看起来像这样:
"hello, i'm some text with an url like http://www.the-url.com/ and I need to have an hypertext link !"
Run Code Online (Sandbox Code Playgroud)
我想得到的是一个字符串看起来像:
"hello, i'm some text with an url like <a href="http://www.the-url.com/">http://www.the-url.com/</a> and I need to have an hypertext link !"
Run Code Online (Sandbox Code Playgroud)
我可以使用以下代码行捕获URL:
String withUrlString = myString.replaceAll(".*://[^<>[:space:]]+[[:alnum:]/]", "<a href=\"null\">HereWasAnURL</a>");
Run Code Online (Sandbox Code Playgroud)
也许regexp表达式需要一些修正,但它工作正常,需要在更长的时间内进行测试.
所以问题是如何保持正则表达式捕获的表达式,只需添加创建链接所需的内容:catched string
提前感谢您的关注和回复!
尝试使用:
myString.replaceAll("(.*://[^<>[:space:]]+[[:alnum:]/])", "<a href=\"$1\">HereWasAnURL</a>");
Run Code Online (Sandbox Code Playgroud)
我没有检查你的正则表达式.
通过使用, ()您可以创建组.该$1指示组索引.
$1将取代网址.
我问了一个simalir问题:我的问题
有些例子:在正则表达式中捕获组中的文本
public static String textToHtmlConvertingURLsToLinks(String text) {
if (text == null) {
return text;
}
String escapedText = HtmlUtils.htmlEscape(text);
return escapedText.replaceAll("(\\A|\\s)((http|https|ftp|mailto):\\S+)(\\s|\\z)",
"$1<a href=\"$2\">$2</a>$4");
}
Run Code Online (Sandbox Code Playgroud)
可能有更好的REGEX,但只要在URL结束后有空格或URL在文本的末尾,这就可以解决问题.此特定实现还使用org.springframework.web.util.HtmlUtils来转义可能已输入的任何其他HTML.
对于正在搜索更强大的解决方案的任何人,我可以推荐Twitter文本库.
用这个库替换URL的工作方式如下:
new Autolink().autolink(plainText)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15474 次 |
| 最近记录: |