黑马程序员技术交流社区

标题: 正则表式分组中的匹配问题,下面的代码看不懂?? [打印本页]

作者: 付鑫鑫    时间: 2013-4-23 23:58
标题: 正则表式分组中的匹配问题,下面的代码看不懂??
String regex = "(.)\\1(.)\\2";       
这个是怎么的匹配,
作者: 何俊森    时间: 2013-4-25 23:20
本帖最后由 何俊森 于 2013-4-25 23:29 编辑

查api
Back 引用
\n         任何匹配的 nth 捕获组,意思是相应第n组的引用,(12)\1(ab)\2就表示1212abab;
(.)表示匹配任意单个字符。
  1. import java.util.regex.Matcher;
  2. import java.util.regex.Pattern;

  3. public class RegexTest {

  4.         /**
  5.          * @param args
  6.          */
  7.         public static void main(String[] args) {
  8.                 // TODO Auto-generated method stub
  9.                 String regex = "(.)\\1(.)\\2";
  10.                 String str = "**aa";
  11.                 Pattern p = Pattern.compile(regex);
  12.                 Matcher m = p.matcher(str);
  13.                 if(m.find()){
  14.                         int gc = m.groupCount();
  15.                         for(int i=0; i<=gc; i++){
  16.                                 System.out.println(m.group(i));
  17.                         }
  18.                 }
  19.         }

  20. }
  21. group(0)是匹配整个表达式的字符串的那部分**aa
  22.         group(1)是第1组(.)匹配的那个字符: *, \1就表示*
  23.         group(2)是第2组(.)匹配的那个字符:a, \2就表示a
复制代码

作者: xiewen    时间: 2013-4-26 00:54
"\"转义符,所以配备“.\1.\2”




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2