Java字符串::replaceAll仅替换第一个出现(可能不正确的正则表达式)

Java字符串::replaceAll仅替换第一个出现(可能不正确的正则表达式),java,regex,Java,Regex,我试图从confluence中检索一些页面,并在我自己的应用程序中呈现它。我使用正则表达式将confluence图像URL替换为我的端点,该端点在confluence和我的应用程序用户之间提供经过身份验证的代理 正则表达式是: (src | href)=“\/download\/(.*)\/(.*)\/(.*)\/(.*)” 整个更换线为: html=html.replaceAll(((src | href)=\“\\/下载\\/(.*)\/(.*)\/(.*)\/(.*)\/(.*)”,“$1

我试图从confluence中检索一些页面,并在我自己的应用程序中呈现它。我使用正则表达式将confluence图像URL替换为我的端点,该端点在confluence和我的应用程序用户之间提供经过身份验证的代理

正则表达式是:

(src | href)=“\/download\/(.*)\/(.*)\/(.*)\/(.*)”

整个更换线为:

html=html.replaceAll(((src | href)=\“\\/下载\\/(.*)\/(.*)\/(.*)\/(.*)\/(.*)”,“$1=\\”+baseUrl+“/rest/myapp/documents/“+instance+”/$2/$3/$4”);

我想换一个

src=“/download/attachments/65591/
with
src=”https://myapp/rest/myapp/documents/{instance}/thumbnails/65591/

我使用不同的工具测试了这个正则表达式,包括,但是虽然我的测试结果是肯定的,但我的应用程序只替换了第一次出现的正则表达式

我做错了什么?

正如建议的那样,
*
是贪婪的,所以用

"(src|href)=\"\\/download\\/(.*?)\\/(.*?)\\/(.*?)\\/"
解决了问题。谢谢!

正如建议的那样,
*
是贪婪的,因此将我的正则表达式替换为

"(src|href)=\"\\/download\\/(.*?)\\/(.*?)\\/(.*?)\\/"

解决了这个问题。谢谢!

这个
*
是贪婪的,它与字符串的其余部分相匹配,因此您只有一个匹配项。也许您可以用一个有两个实例的字符串创建一个测试用例。也许您应该包括结束标记,或者最后一个子句us[^”]*这样它将匹配所有非引号的内容。你是对的。谢谢。
*
贪婪,与字符串的其余部分匹配,因此你只有一个匹配项。也许你可以用一个有两个实例的字符串创建一个测试用例。也许你应该包括结束标记,或者最后一个子句us[^”]*这样它就能匹配所有非报价的内容。你说得对。谢谢。