第13章--字符串

一,不可变

二,与StringBuilder的关系

三,正则表达式(这是我想讲的重点)

能解决字符串处理的匹配问题。

正则表达式

分类:String对象的正则表达式

   非String对象的正则表达式

注意:圆括号()作用是将正则表达式分组;|竖直线表示或操作;\n换行符;java中\\代表插入一个正则表达式的反斜线

简单的途径:String类自带的正则表达式工具:

(1).--切割--split(String regex)--:将字符串从正则表达式匹配的地方切开

(2)--替换--{replaceFirst(String regex) , replaceAll(String regex)}

扫描二维码关注公众号,回复: 1721507 查看本文章

    replaceFirst(String regex)--替换正则表达式匹配的第一个子串;

    replaceAll(String regex)----替换正则表达式匹配的所有子串;

(3)--匹配--matches(String regex)

3.2--非String对象的正则表达式

部分-正则表达式构造子列表:

字符类:

逻辑操作符:

边界匹配符:

量词:贪婪型;勉强型;

CharSequence接口从CharBuffer,String,StringBuffer,StringBuilder类中抽象出来的一般化定义。

   interface CharSequence{

    charAt(int i);

    length();

    subSequence(int start,int end);

    toString();

  }

构造正则表达式对象--重点来了

Pattern和Matcher

Pattern pattern=Pattern.compile(x);  编译正则表达式x,Pattern对象表示编译后的正则表达式。

Matcher matcher=pattern.matcher(); Matcher对象有很多功能可用。在此介绍它的find(); group(); start(); end(); reset();

例子:

String reg="\\d+mj"; //数字mj

Pattern pattern=Pattern.compile(reg);

Matcher matcher=pattern.matcher();

while(matcher.find){

  System.out.println(matcher.group()+"---"+matcher.start()+"---"+matcher.end());

}

find()方法用来在CharSequence中查找多个匹配,注意关键词,"多个",所以才会用while来遍历。

find()像迭代器那样向前遍历输入字符串。有个重载方法find(int startFindIndex),参数即字符串中搜索的起点。

group()组--注意-要现有find()操作-再才有group组操作

组是用括号划分的正则表达式,可根据组的编号来引用某个组;

例子:a(b)(c)d   :group()/group(0)--abcd;   group(1)--b;    group(2)--c

group()与group(0)作用相同--返回前一次匹配操作的第0组。

groupCount()--返回组数,注意-不包括第0组

start([int group])--返回前一次操作找到的组的起始索引

end(int group)---返回前一次操作找到的组的最后一个字符索引加1的值

reset();-----------将matcher应用与一个新的字符串

易混点:

1.匹配

String自带的matches()--整个输入的字符串都匹配正则表达式才true

Matcher的matches()--同上

Pattern.matches(String reg,String charSequence)---同上

  if(Pattern.matches("\\d+mj","mj123mj")){
    System.out.println("ok");
  }else{
    System.out.println("no");
  }

Matcher的find()可以在输入的任意位置定位正则表达式,注意--是任意位置。这就很方便了

  Pattern pa=Pattern.compile("\\d+mj");
  Matcher ma=pa.matcher("123mj123mj");
  while(ma.find()){
    System.out.println(ma.group());
  };

2.替换

String的replace()---全部替换,参数是普通的String

  与replaceAll()--全部替换,参数是正则表达式

猜你喜欢

转载自www.cnblogs.com/mjbenkyo/p/9218188.html