我现在有一个地址,比如:上海市北京路100号400室
用正则表达式如何拆分成:上海市       
                       北京路         
                       100号              
                       400室
这样的java正则表达式该如何写,最好能帮我解释下,谢谢了

解决方案 »

  1.   

        /**
         * @param args
         */
        public static void main(String[] args) {
            String sample = "上海市北京路100号400室";
            String regexPattern = "(.+?[市路号室])";
            Pattern pattern = Pattern.compile(regexPattern);
            Matcher matcher = pattern.matcher(sample);
            while (matcher.find()) {
                System.out.println(matcher.group());
            }
        }“市路号室”可以理解为你的地址单位,范围依次缩小,每次找到一个单位,就把“内容+单位”输出 
      

  2.   

        /**
         * @param args
         */
        public static void main(String[] args) {
            String sample = "上海市北京路100号2号楼100室C";
            String regexPattern = ".+?([市楼路室]|号楼|号)|.+$";
            Pattern pattern = Pattern.compile(regexPattern);
            Matcher matcher = pattern.matcher(sample);
            while (matcher.find()) {
                System.out.println(matcher.group());
            }
        }
    -----------------------
    上海市
    北京路
    100号
    2号楼
    100室
    C
    -----------------------
    号楼这样的东西自己想办法解决一下吧,把“号楼”整体当作一个单位,这样它的优先级别就高于“号”了如果出现类似的情况,就在后面添加这些单位,优先级别从样式左边开始依次降低