黑马程序员技术交流社区

标题: 正则表达式的一点疑问 [打印本页]

作者: 黄成超    时间: 2013-2-15 22:05
标题: 正则表达式的一点疑问
  1. //在下面这个程序中:
  2. class RegexDemo
  3. {
  4. public static void main(String[] args)
  5. {
  6. string str = "zhangshan.lisi.wangwu";
  7. String reg = "\\.";
  8. System.out.println(str.matches(reg));
  9. }
  10. }
  11. //使用字符串定义正则表达式规则中出现的“.”“\.”“\\.”各代表什么意思
复制代码

作者: 李易烜    时间: 2013-2-15 22:24
匹配 “.” 这个字符
作者: 夏振博    时间: 2013-2-16 01:13
"."  任何字符
代码体现:
  1. public class Test1 {
  2.         public static void main(String[] args) throws IOException {

  3.                 // 用”#”替换叠词:"sdaaafghccccjkqqqqql";
  4.                 // 定义字符串
  5.                 String str = "sdaaafghccccjkqqqqql";
  6.                 // 定义规则,任意一个字符只要出现出现2次以上,使用#替换掉
  7.                 String regex = "(.)\\1+";
  8.                 // 使用规则
  9.                 String str2 = str.replaceAll(regex, "#");
  10.                 System.out.println(str2);
  11.         }
  12. }
复制代码
"\."反斜线字符 ('\') 用于引用转义
代码表现:
  1. public class Test {
  2.         public static void main(String[] args) throws IOException {

  3.                 // 切割字符串"aa,bb,cc";
  4.                 String str = "aa,bb,cc";
  5.                 // 定义规则
  6.                 String regex = ",";
  7.                 // 使用规则
  8.                 String[] strArray = str.split(regex);
  9.                 // 遍历数组
  10.                 for (String s : strArray) {
  11.                         System.out.println(s);
  12.                 }

  13.                 System.out.println("*****************************");
  14.                 // 切割字符串"aa.bb.cc";
  15.                 String str2 = "aa.bb.cc";
  16.                 // 定义规则 如果想使用字符.分割,需要转义。
  17.                 String regex2 = "\\.";
  18.                 // 使用规则
  19.                 String[] strArray2 = str2.split(regex2);
  20.                 // 遍历数组
  21.                 for (String s : strArray2) {
  22.                         System.out.println(s);
  23.                 }
  24.         }
  25. }
复制代码

作者: 念满    时间: 2013-2-18 23:06
符号表达特殊的含义。一般会用到4种符号:字符类、预定义字符、数量词、边界匹配器。
字符类
[abc]        a、b 或 c(简单类)
[^abc]        任何字符,除了 a、b 或 c(否定)
[a-zA-Z]        a 到 z 或 A 到 Z,两头的字母包括在内(范围)
[a-d[m-p]]        a 到 d 或 m 到 p:[a-dm-p](并集)
[a-z&&[def]]        d、e 或 f(交集)
[a-z&&[^bc]]        a 到 z,除了 b 和 c:[ad-z](减去)
[a-z&&[^m-p]]        a 到 z,而非 m 到 p:[a-lq-z](减去)
       
预定义字符类
.        任何字符(与行结束符可能匹配也可能不匹配)

\d        数字:[0-9]
\D        非数字: [^0-9]
\s        空白字符:[ \t\n\x0B\f\r]
\S        非空白字符:[^\s]
\w        单词字符:[a-zA-Z_0-9]
\W        非单词字符:[^\w]
数量词
X?        X,一次或一次也没有
X*        X,零次或多次
X+        X,一次或多次
X{n}        X,恰好 n 次
X{n,}        X,至少 n 次
X{n,m}        X,至少 n 次,但是不超过 m 次
边界匹配器
^        行的开头
$        行的结尾
\b        单词边界
\B        非单词边界
\A        输入的开头
\G        上一个匹配的结尾
\Z        输入的结尾,仅用于最后的结束符(如果有的话)

\z        输入的结尾

学习正则表达式要把一些基本的符号记住;"."代表任何字符(与行结束符可能匹配也可能不匹配),但是在实际操作过程中可能会出现实实际际存在的点,这时候要怎么把这个点表示出来呢?用\来转义,但\也是一个特殊符号所以还要转义\,故\往往是成对存在的




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