我需要在新版本上更改AssemblyVersion.我使用java代码string.replaceAll(regexPattern,updatedString);
此代码适用于正常的正则表达式模式,但我无法在此模式中使用非捕获组.我想使用非捕获组来确保我不捕获非必需的模式.这是我试过的代码:
String str="[assembly: AssemblyVersion(\"1.0.0.0\")]";
str=str.replaceAll("(?:\\[assembly: AssemblyVersion\\(\"\\d\\.\\d\\.)?.*(?:\"\\)\\])?", "4.0");
System.out.println(str);
在这里,我想匹配字符串[assembly:AssemblyVersion(int.int)]并仅替换次要版本.
预期的结果是[assembly:AssemblyVersion(“1.0.4.0”)],但我的结果为4.04.0.
有人可以帮我这个吗?
解决方法:
为什么不使用looka-head / look-behind呢?
它们是非捕获的,可以在这里轻松工作:
str = str
.replaceAll(
"(?<=\\[assembly: AssemblyVersion\\(\"\\d\\.\\d\\.).*(?=\"\\)\\])",
"4.0"
);
标签:java,regex,automation
来源: https://codeday.me/bug/20190612/1222679.html