我现在有一个地址,比如:上海市北京路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.   

    弄 和 路 都是单位,你自己总结出来
    . 是任意字符
    + 重复一次或多次
    ? 匹配方向从右至左如果室后面还有C的话,用 String regexPattern = "(.+?[市路号室])|.+$";$ 代表句子最末