Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用嵌入数字规范化字符串_Java_Regex - Fatal编程技术网

Java 使用嵌入数字规范化字符串

Java 使用嵌入数字规范化字符串,java,regex,Java,Regex,我有许多文件夹(200+个),其格式为字符与数字混合,例如: california1 california2_scenes california11 california12_people utah8 utah3_tounament 命名遵循以下约定: 从字符串开始 后跟1或2位数字 可选后跟下划线和其他字符(这次没有数字) 我正在编写一个Java命令工具,通过对 california01 california02_scenes california11 california12_peop

我有许多文件夹(200+个),其格式为字符与数字混合,例如:

california1
california2_scenes
california11
california12_people
utah8
utah3_tounament
命名遵循以下约定:

  • 从字符串开始
  • 后跟1或2位数字
  • 可选后跟下划线和其他字符(这次没有数字)
我正在编写一个Java命令工具,通过对

california01
california02_scenes
california11
california12_people
utah08
utah03_tounament
我尝试使用正则表达式搜索单个数字并替换:

name.replaceAll("(\\d)", "\\1");
由于以下几个原因,上述方法不起作用:

  • 模式匹配1位和2位数字。我只想匹配一个数字
  • Java不理解表示第一个匹配组的
    \\1
    符号
  • 我还尝试使用“直接替换”解决此问题:

    name = name.replaceAll("1_", "01_"). ... .replaceAll("9_", "09_");
    
    同样,此方法不区分一位数和两位数,也不适用于一位数位于字符串末尾的情况

    我很感激能得到的任何帮助

        String[] as = { "california1", "california2_scenes", "california11", "california12_people", "utah8",
                "utah3_tounament" };
        for (String s : as) {
            //no number behind, number, no number ahead
            String sp = "(?<!\\d)\\d(?!\\d)";
            Pattern p = Pattern.compile(sp);
            System.out.println(s);
            System.out.println(s.replaceAll(sp, "0$0"));
        }
    
    california1
    california01
    california2_scenes
    california02_scenes
    california11
    california11
    california12_people
    california12_people
    utah8
    utah08
    utah3_tounament
    utah03_tounament