黑马程序员技术交流社区

标题: 关于正则表达式的一个问题? 谁会? [打印本页]

作者: 金曦    时间: 2012-11-4 21:28
标题: 关于正则表达式的一个问题? 谁会?
str.replaceAll("a([bcd])", "$1")

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

其中的 $1又是什么意思?
作者: 梁锡伟    时间: 2012-11-4 21:34
把所有xxx的字符窜 替换为$1  。。。。不记得了,得看pattern这个类的api说明。

xxx   大概是ab  ac   ad ,查文档吧
作者: 朱宏青    时间: 2012-11-4 22:22
.replaceAll这个方法是用来替换字符的。

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

差不多就是这样。
作者: 王虎    时间: 2012-11-4 22:54

"a([bcd])", "$1"
左边这个参数"a([bcd])": a表示第一位的字符;([abc])表示第二个字符是abc中的某一个,加括号表示凡是符合a,b,c这三个字符范围中的划分为一组,这个叫做规则服用
右边的参数"$1" :表示引用划分好的组的规则
举个例子:假定一个字符串afabac,用完方法后变成afbc
作者: 陈云展    时间: 2012-11-4 23:54
自已经过查找。和楼上的答案。以及思考。写了下面的代码。你可以参考下。
  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.          
复制代码

作者: 小学生0987    时间: 2012-11-7 19:19
4楼正解




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