java - 在具有 Java 正则表达式问题的组之间插入连字符

标签 java regex

我正在执行一项测试,以查找并替换由 3 或 4 个大写字母后跟具有相同字符串、连字符和相同数字的数字组成的字符串。在 Perl 中,我可以使用:

s/([A-Z]{3,4})([0-9])/$1-$2/g;

我已经在 J​​ava 中尝试过,硬编码一个字符串,例如:

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/

相关文章:

java - 如何在 Selenium 中通过 DOM 属性识别元素?

java - Google Go for Java 平台?

python - 使用正则表达式解析带有单位的值范围

javascript - regex.test() 每隔一段时间才有效

javascript - 从特定格式的字符串中获取变量列表

javascript - 通过正则表达式删除和替换字符

java - Apache Ant 1.9.4 与 Java 1.8 的兼容性

java - Spring ThreadPoolTask​​Executor 只运行一个线程

java - 对于大文件(20G),Google Cloud Storage Java API 比 gsutil cp 慢得多

python - 找出句子中一定距离内的2个字符串