Java学习笔记(24)-正则表达式

正则表达式

    正则表达式的作用是规定一个字符串的格式,正则表达式使用一些特殊的字符组合来描述格式。

    [email protected]

描述邮箱格式

    [a-zA-Z0-9_]+@[a-zA-Z0-9]+(.com|.cn|.net)

正则表达式中:

    []:描述一个字符  [a-z]:是小写字母

    ():将一组字符看为一个整体

    |:描述或关系

量词:

    +:表示前面的内容出现1到多次

    *:表示前面的内容出现0到多次

    ?:表示前面的内容出现0到1次

    +的作用代表前面描述的内容出现1次以上等同于{1,}

正则表达式的首尾:

    ^:表示字符串必须以其后面约束的内容开始

    $:表示字符串必须以其前面约束的内容结尾

    若正则表达式不书写^或者$,正则表达式代表匹配部分内容,都加上则

Java学习笔记(24)-正则表达式_第1张图片

Java学习笔记(24)-正则表达式_第2张图片

Java学习笔记(24)-正则表达式_第3张图片

Java学习笔记(24)-正则表达式_第4张图片

Java学习笔记(24)-正则表达式_第5张图片

package day01;

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

/*
 * 测试正则表达式
 */
public class TestRegex {
	public static void main(String[] args) {
		/*
		 * Pattern的作用是描述正则表达式的格式支持
		 * 使用静态方法compile注册正则表达式生成实例
		 */
		/*
		 * 邮箱格式的正则表达式
		 * [email protected]
		 */
		/*
		 * 使用java的字符串去描述正则表达式的时候,会出现一个冲突
		 * 如何描述正则表达式的"."。
		 * 起因:
		 * 在正则表达式中我们想描述一个".",但"."在正则表达式中有特殊的含义,它代表任意字符,所以我们在
		 * 正则表达式中想描述"."的原意就要写成"\."。
		 * 但是我们用java的字符串去描述正则表达式的时候,因为"."在java字符串中没有特殊的含义,所以java认为我们
		 * 书写String s = "\.";是有语法错误的,因为"."不需要转义。这就产生了冲突。
		 * 目的:
		 * 我们实际的目的很简单,就是要让java的字符串描述"\.",所以,那么在java中"\"是有特殊
		 * 含义的,代表转义字符,我们只需要将"\"转义为单纯的斜杠即可描述"\."了。
		 * 所以我们用java描述"\."的正确写法是String s = "\\.";
		 */
		//定义正则表达式
		String regStr = 
				"^[a-zA-Z0-9_]+@[a-zA-Z0-9]+(\\.com|\\.cn|\\.net)$";
		//手机号的正则表达式
		String regPhoneNumber = "^(\\+86)?\\d{11}$";
		//^必须以后面表达式开始,$必须以前面约束的内容结尾
		System.out.println(regStr);
		//注册正则表达式
		Pattern pattern = Pattern.compile(regStr);
		String mailStr = "@[email protected]";
		//匹配字符串,返回描述匹配结果的Matcher实例
		Matcher matcher = pattern.matcher(mailStr);//ctrl+o自动检索错误
		//通过调用Matcher的find方法得知是否匹配成功
		if(matcher.find()){
			System.out.println("邮箱格式正确");
		}else{
			System.out.println("邮箱格式错误");
		}
		
	}
}
package day01;

import java.util.Arrays;

/*
 * 测试字符串的拆分
 */
public class TestStringSplit {
	public static void main(String[] args){
		String info = "hello!world!java";
		String[] array = info.split("!");
		System.out.println(Arrays.toString(array));
		/*
		 * 对图片名重新定义,要保留图片原来的后缀
		 */
		String name = "me.jpg";
		String[] nameArray = name.split("\\.");//.在正则表达式中有特殊含义,加\\
		System.out.println("数组的长度:"+nameArray.length);
		String newName = "324235."+ nameArray[1];
		System.out.println("新图片名:"+newName);
	}
}

Java学习笔记(24)-正则表达式_第6张图片


package day01;
/*
 * 测试字符串替换操作
 */
public class TestReplace {
	public static void main(String[] args) {
		//定义一个字符串,数组和字母穿插
		String info = "123ffds32432dfs23342sfds";
		/*
		 * 目标:
		 * 将字符串中的数字部分替换为”#number#"
		 * repaceAll方法,可以替换字符串中满足正则表达式部分的内容。
		 * replaceAll(String regex,Strig replacement);
		 */
		String str = info.replaceAll("[0-9]+", "#number#");
		System.out.println(str);
	}
}


你可能感兴趣的:(Java)