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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 金曦 中级黑马   /  2012-11-4 21:28  /  2668 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

str.replaceAll("a([bcd])", "$1")

请问上面的正则表达式是什么意思?

其中的 $1又是什么意思?

评分

参与人数 2技术分 +2 收起 理由
滔哥 + 1 送张飞机票
刘芮铭 + 1

查看全部评分

5 个回复

倒序浏览
把所有xxx的字符窜 替换为$1  。。。。不记得了,得看pattern这个类的api说明。

xxx   大概是ab  ac   ad ,查文档吧

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
.replaceAll这个方法是用来替换字符的。

("a([bcd])", "$1")的意思是将"ab,ac,ad"都替换成"$1"。

差不多就是这样。

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报

"a([bcd])", "$1"
左边这个参数"a([bcd])": a表示第一位的字符;([abc])表示第二个字符是abc中的某一个,加括号表示凡是符合a,b,c这三个字符范围中的划分为一组,这个叫做规则服用
右边的参数"$1" :表示引用划分好的组的规则
举个例子:假定一个字符串afabac,用完方法后变成afbc

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
自已经过查找。和楼上的答案。以及思考。写了下面的代码。你可以参考下。
  1. package com.snow;

  2. import java.util.regex.Matcher;
  3. import java.util.regex.Pattern;

  4. public class T {
  5.         public static void main(String[] args) {
  6.                 String str = "afabacad";
  7.                 String str1 = "afabacad";
  8.                 System.out.println(str);
  9.                 Matcher matcher = Pattern.compile("a([bcd])").matcher(str);

  10.                 while(matcher.find()){
  11.                         System.out.println(matcher.group(0));
  12.                         System.out.println(matcher.group(1));
  13.                         //System.out.println(matcher.group(2));
  14.                 }
  15.                
  16.                
  17.                 str = str.replaceAll("a([bcd])", "$0");
  18.                 str1 = str1.replaceAll("a([bcd])", "$1");
  19.                 System.out.println(str);
  20.                 System.out.println(str1);
  21.                 //test();
  22.         }
  23. }

  24.          
复制代码

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
4楼正解
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马