A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

String regex = "(.)\\1(.)\\2";       
这个是怎么的匹配,

2 个回复

倒序浏览
本帖最后由 何俊森 于 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
复制代码
回复 使用道具 举报
"\"转义符,所以配备“.\1.\2”
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马