Java String::replaceAll 只替换第一次出现的内容(可能是错误的regex)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java String::replaceAll 只替换第一次出现的内容(可能是错误的regex)相关的知识,希望对你有一定的参考价值。
我试图从confluence中检索一些页面,并在我自己的应用程序中渲染它。我使用regex来替换confluence图片的URL,并在confluence和我的应用程序的用户之间提供认证代理的端点。
regex是:
(src|href)="/download/(.*)/(.*)/(.*)
而整个替换行是:
html = html.replaceAll("(src|href)="\/download\/(.*)\/(.*)\/(.*)", "$1="" + baseUrl + "/rest/myapp/documents/"+instance+"/$2/$3/$4");
我想替换的是
src="/download/attachments/65591/
与 src="https://myapp/rest/myapp/documents/{instance}/thumbnails/65591/
我使用不同的工具测试了这个regex,包括 https:/regex101.comr8r77OF4 但虽然我的测试结果是阳性,但我的申请却只替换了第一次出现的情况。
我到底做错了什么?
作为 亚光 建议: .*
是贪婪的,所以把我的regex替换成了
"(src|href)="\/download\/(.*?)\/(.*?)\/(.*?)\/"
解决了这个问题。谢谢!
以上是关于Java String::replaceAll 只替换第一次出现的内容(可能是错误的regex)的主要内容,如果未能解决你的问题,请参考以下文章
Java:理解 String replaceAll() 方法
Java String ReplaceAll 方法给出非法重复错误?
Java String.replaceAll() 与后向引用(backreference)