黑马程序员_正则表达式

  ------- android培训java培训、期待与您交流! ----------


一    正则表达式
1 正则表达式是符合一定规则的表达

2 作用:专门用于操作字符串

3 好处:可以简化对字符串的操作

4 弊处:定义越多,阅读性差
4 特点:用一些特定的符号表示代码操作,可以简化书写

5 摘要:
(1)字符类 :
[abc]:只能 a、b 或 c 
[^abc]:任何字符,除了 a、b 或 c 
[a-zA-Z]:表示a 到 z 或 A 到 Z 

(2)预定义字符类 
.:表示任何字符 
\d:数字[0-9] 
\D:非数字  [^0-9] 
\w:单词字符  [a-zA-Z_0-9] 
\W:非单词字符  [^\w] 

(3)数量词 
X?:X,一次或一次也没有 
X*:X,零次或多次 
X+:X,一次或多次 
X{n}:X,恰好 n 次 
X{n,}:X,至少 n 次 
X{n,m}:X,至少 n 次,但是不超过 m 次 

6 关于正则表达式的方法
(1)String类中的matches(String regex);//匹配,返回boolean型

例子:

class MatchesDemo 
{
	public static void main(String[] args) 
	{
		//校验qq号
		String qq="22a2222";
		//定义个规则,第一位是0-9,第二位0-9,总共是5-15位
		String regex1="[1-9]\\d{4,14}";
		//匹配qq号
		boolean b1=qq.matches(regex1);
		System.out.println(b1);

		//校验手机号
		String tel="1582a347544";
		//定义规则,第一位只能是1,第二位可以是358,必须是11位
		String regex2="1[358]\\d{9}";
		//匹配手机号
		boolean b2=tel.matches(regex2);
		System.out.println(b2);
	}
}


(2)String类中的split(String regex);//切割,返回字符串数组

例子:

class  SplitDemo
{
	public static void main(String[] args) 
	{
		String s1="a..b...c.";
		//规则:按.切,但是.是特殊字符,所以要转义
		String regex1="\\.+";
		String[] str1=s1.split(regex1);
		for(String str:str1)
		{
			System.out.println(str);
		}

		System.out.println("------------------------");

		String s2="ddaffbttc";
		//规则:按叠词切,需要用到组(.)\\1
		String regex2="(.)\\1";
		String[] str2=s2.split(regex2);
		for(String str:str2)
		{
			System.out.println(str);
		}
	}
}

(3)String类中的replaceAll(String regex,String newstr);//替换,将符合规则的字符串替换成指定的字符串,返回一个字符串
例子:

class  ReplaceAllDemo
{
	public static void main(String[] args) 
	{
		String s1="ffffasssbjjjjcdddddd";
		//规则:叠词
		String regex1="(.)\\1+";
		//将叠词替换成单个#
		String s2=s1.replaceAll(regex1,"#");
		System.out.println(s2);
		//将叠词替换成单个单词
		String s3=s1.replaceAll(regex2,"$1");
		//注意:美元符号的意思是拿前面规则的第一个组
		System.out.println(s3);
	}
}

(4)获取:获取字符串中符合规则的字符串
1 将正则表达式封装成对象,Pattern类
2 将字符串与正则表达式对象相关联
3 关联后获取正则匹配器,Matcher类
4 通过匹配对符合规则的子串进行操作
例子:

import java.util.regex.*;
class GetDemo 
{
	public static void main(String[] args) 
	{
		String str="aaa bbbb ccc dddd eee ffff";
		//定义规则
		String regex="\\b[a-z]{3}\\b";
		//将规则封装成对象
		Pattern p=Pattern.compile(regex);
		//让字符串与正则对象相关联,并获取匹配器
		Matcher m=p.matcher(str);
		//获取符规则的子串
		while(m.find())//查找
		{
			//获取子串
			System.out.println(m.group());
			//获取子串的开始位和结束位
			System.out.println(m.start()+"::"+m.end());
		}
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值