JAVA基础14-字符串(String)和java正则表达式简述

一、String对象是不可变的

每次修改String,实际上在java对象堆都会创建一个新的对象、

二、StringBuffer和StringBuilder

StringBuffer :效率低,线程安全的(同步)
StringBuilder:效率高,线程不安全(不同步)

三、 正则表达式

3-1、作用:
	字符串匹配,查找,替换
3-2、基础知识
符号含义
.匹配一个字符
*匹配0-N个字符
+匹配1-N个字符
匹配 0或者1个字符
^位于[]内表示取反,位于[]外,表示一行的开头
-表示范围例如 0-9,
|表示“或”
&&表示“与”
\d表示数值[0-9]
\D表示非数值[^0-9]
\s表示空白符(空格,回车,tab,换行,换页),[\t\n\x0B\f\r]
\S表示非空白符
\w表示词字符(大小写字母,下斜杠,数字),[a-zA-Z_0-9]
\W表示非词字符
\b词的边界
\B非词边界
\G前一个匹配的结束
3-3 Pattern和Matcher的概念

都在java.util.regex包下

3-3-1.Pattern类

静态方法:compoile() 用于创建正则表达式
pattern():用于返回正则表达式
split():用于分隔字符串,返回一个字符串数组
静态方法matcher :用于快速匹配字符串,该方法只能匹配一次。且匹配全部字符串

Pattern p=Pattern.compile("\W");//创建正则表达式
System.out.println(p.pattern());//输出该正则表达式
for(String s:p.split("你好啊123,你好")){// split() 用于分隔字符串,返回一个字符串数组
		System.out.println(s);
	}
	//静态方法 matches(正则表达式,字符串)
	Pattern.matches("\\d", "1234");//true
	Pattern.matches("\\b+", "12aa")//false
3-3-2、Matcher类

Pattern中的matcher方法用于创建Matcher类的对象
Matcher常用方法:
1.matches(): 对整个字符串进行匹配,只有整个字符串都匹配了才返回true
2. lookingAt(): 从第一个字符开始匹配,若匹配成功,停止匹配返回true。若匹配失败,停止匹配,返回false
3. find():部分匹配,匹配到的字符串可以是任意位置
4. start()返回匹配到的子字符串在字符串中的索引位置.
5. end()返回匹配到的子字符串的最后一个字符在字符串中的索引位置.
6. group()返回匹配到的子字符串
7. start(int i),end(int i),group(int i)专用于分组操作.
8. Mathcer类还有一个groupCount()用于返回有多少组.

Pattern p=Pattern.compile("\\b+");//创建Pattern对象
Matcher m= p.matcher("123aa");//创建Matcher对象
m.pattern()  //获得创建Matcher对象的Pattern对象
m.matches() //匹配整个字符串,返回false
m.lookingAt() //匹配到123,返回true
m.find() //返回true
System.out.println(m.start());   //输出0;匹配子串的开始索引
System.out.println(m.end());//输出3     ; 匹配子串的结束索引
System.out.println(m.group());//输出123  ; 匹配子串
m.find(3)//从字符串下标为3处,开始匹配
/
//分组操作
Pattern p=Pattern.compile("([a-z]+)(\\d+)"); 
Matcher m=p.matcher("aaa2223bb"); 
m.find();   //匹配aaa2223 
m.groupCount();   //返回2,因为有2组 
m.start(1);   //返回0 返回第一组匹配到的子字符串在字符串中的索引号 
m.start(2);   //返回3 
m.end(1);   //返回3 返回第一组匹配到的子字符串的最后一个字符在字符串中的索引位置. 
m.end(2);   //返回7 
m.group(1);   //返回aaa,返回第一组匹配到的子字符串 
m.group(2);   //返回2223,返回第二组匹配到的子字符串

3-4 捕获组的概念
捕获组:可以通过从左到右计算器开括号的编号,编号从1开始;
	例如:A(B(C))D
		编号0 为 ABCD
		编号1为BC
		编号2 为C
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值