正则表达式,用于使用 ant 替换字符串中的子字符串



我一直在努力尝试在 ant 文件中使用正则表达式(使用 replaceregexp 标签(来替换 java 类中不是常量的特定字符串,例如:
替换:V1_0_0 by V2_0_0 在:

public void doSomething() {
return "xxxxxxxV1_0_0.yyyyyyyy"
}

当然,V1_0_0总是会改变的 和 .yyyy 会改变,但 xxxxxxx 会是一样的

这是我能得到的更接近: (?<=xxxxxxxx(.* 或 (?<=xxxxxxxx(.*

但这就是我得到的:

public void doSomething() {
return "xxxxxxxV2_0_0;
}

xxxxxxx 或 yyyyyyy 可以是 Java 类名中允许的任何字符

像这样尝试:

(?:xxxxxxx)V[0-9]+_[0-9]+_[0-9]+(?:.[a-z]+)?

我使用?使yyyyyy部分可选。 也许你需要一个与a-z不同的角色类,也许是[a-zA-Z][a-zA-Z0-9_]

演示

代码示例:

import java.util.regex.Matcher;
import java.util.regex.Pattern;
class Ideone {
public static void main(String[] args) throws java.lang.Exception {
String regex = "(?:xxxxxxx)V[0-9]+_[0-9]+_[0-9]+(?:\.[a-z]+)?";
String string = "public void doSomething() {n" 
+ "    return "xxxxxxxV1_0_0.yyyyyyyy";n" 
+ "}";
String subst = "xxxxxxxV2_0_0";
Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
Matcher matcher = pattern.matcher(string);
String result = matcher.replaceAll(subst);
System.out.println("Substitution result: " + result);
}
}

相关内容

  • 没有找到相关文章

最新更新