我正在执行一项测试,以查找并替换由 3 或 4 个大写字母后跟具有相同字符串、连字符和相同数字的数字组成的字符串。在 Perl 中,我可以使用:
s/([A-Z]{3,4})([0-9])/$1-$2/g;
我已经在 Java 中尝试过,硬编码一个字符串,例如:
public class Test {
public static void main(String[] args) {
String test = "TEST1";
Pattern p = Pattern.compile("([A-Z]{3,4})([0-9])");
Matcher m = p.matcher(test);
if (m.find()) {
m.replaceAll(m.group(1) + "-" + m.group(2));
}
System.out.println(test);
}
}
但是没有找到匹配项。是我的 Java 语法错误还是正则表达式问题?
最佳答案
无需使用 Pattern/Matcher,你可以这样做:
test = test.replaceAll( "([A-Z]{3,4})([0-9])", "$1-$2");
关于java - 在具有 Java 正则表达式问题的组之间插入连字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31147752/