黑马程序员_正则表达式

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

正则表达式:符合一定规则的表达式。

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

               特点:用一些特定的符号来表示一些代码操作,可以简化代码书写。学习正则表达式就是在学习一些特殊符号的使用。

               好处:可以简化对复杂字符串的的操作。

               弊端:符号定义越多,符号越长,阅读性极差。

具体体的功能:

1、匹配: String类中的方法 mathces方法。如果有一处不符合就返回false, 否则就返回true。

代码如下: 

package regex;

public class RegexDem {
	public static void main(String[] args) {
		checkQQ();
	} 
	// 对QQ号进行校验 * 要求:5-15位 不能以0开头 只能是数字 

	public static void checkQQ() {
		String qq = "353605301";
		String regex = "[1-9]\\d{8,14}";
		boolean flag = qq.matches(regex);
		if (flag)
			System.out.println("qq:" + qq);
		else
			System.out.println("qq不合法");
	}
}

2、切割:String类中的split方法。

按照多个空格切割

public class RegexDemo {
	public static void main(String[] args) {
		spiltDemo();
	}
	public static void spiltDemo() {
		String str = "sun  java   jdbc";
		String regex = " +";// 按照多个空格切割
		String[] arr = str.split(regex);
		for (String s : arr) {
			System.out.println(s);
		}
	}
}


 

按照叠词切割:

public class RegexDemo {
	public static void main(String[] args) {
		spiltDemo();
	}
	public static void spiltDemo() {
		String str = "abcddefghiijkllmnouppqrst";
		String regex = "(.)\\1+";// 加号表示多个

		String[] arr = str.split(regex);
		for (String s : arr) {
			System.out.println(s);
		}

	}
}

按照叠词切割. '.'表示任意字符,\\1表示第二位对前一个字符重用,可以将规则封装成一个组,用()来完成。组的出现都有编号,从1开始,想要使用已有的组,可以通过 \n (n为组的标号)形式的获取。

3、替换:String类中的replaceAll方法。

public class RegexDem {
	public static void main(String[] args) {

		String str1 = "abcdef1234567djfkdj7990dkjfk";// 将数字替换为“#”
		replaceAllDemo(str1, "\\d", "#");
		String str2 = "abcddefghiijklllmnouppqrst";// 将叠词替换为单个字符
		replaceAllDemo(str2, "(.)\\1+", "$1");// $1表示叠词的内容

	}

	public static void replaceAllDemo(String str, String reg, String newStr) {
		str = str.replaceAll(reg, newStr);
		System.out.println(str);
	}

}

 

4、获取

操作步骤:

1、将正则表达式封装成对象

2、将正则对象和要操作的字符串相关联

3、关联后获取匹配引擎

4、通过引擎对符合规则的字符进行操作,如获取。

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexDem {
	public static void getDemo() {

		String str = "hello world 2012 shi shi jie mo ri ma?";

		String reg = "\\b[a-z]{3}\\b";// 获取三个字符的单词,\\b 为单词边界

		// 将正则表达式封装成对象
		Pattern p = Pattern.compile(reg);

		// 将正则对象p和要操作的字符串str相关联,获取匹配器
		Matcher m = p.matcher(str);
		while (m.find()) { // 将规则作用到字符串上,并查找。find 方法放回boolean类型
			System.out.println(m.group());

		}

	}

}


 

String类中的matches方法用的就是Pattern对象Matcher对象来完成的。被String封装后用起来比较简单,但功能单一。

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

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值