正则表达式的常见规则
1.字符类
[abc]:字符必须是abc其中一个
[a-z]:字符必须是小写字母
[A-Z]:字符必须是大写字母
[a-zA-Z]:字符必须是字母
[^abc]:字符不能是abc其中一个
[^a-z]:字符不能是小写字母
[^a-zA-Z]:字符不能是字母
2.预定义字符类
. 匹配任意字符
\d 匹配数字
\D 匹配非数字
\w 匹配单词字符 \\w==[a-zA-Z0-9_] 数字字母下划线
\W 匹配非单词字符
3.数量词
x* 字符出现0次或多次
x? 字符出现一次或一次也没有
x+ 字符出现一次或多次
x{n} 字符刚好出现n次
x{n,} 字符最少出现n次
x{n,m] 字符最少出现n次,最多出现m次
4.边界匹配
^ 匹配行的开头
$ 匹配行的结尾
\b 匹配英语单词
package com.book.lite;
import java.util.regex.*;
/**
* @author zhangyu
* @date 2021年08月17日 12:38 下午
* 正则表达式
* 1.正常运用
* 2.切割slit()
* 3.替换replaceAll(规则,替换后内容)
* 4.正则表达式的获取功能(查看自己的正则表达式是否正确):实现步骤
* import java.util.regex.*;
* 1.使用Pattern类的静态方法compile,将正则规则预匹配
* static Pattern compile(正则规则)
* 返回Pattern类对象
*
* 2.使用Pattern类的非静态方法matcher,将正则规则与查找的字符串匹配
* Matcher matcher(字符串)
* 返回Matcher类的对象
*
* 3.使用Matcher类的方法find() 查找符合规则的字符串,如果有返回true
*
* 5.使用Matcher类的方法group() 获取内容
*
*/
public class RegexDemo {
public static void main(String[] args) {
// System.out.println(methon_1());
// System.out.println(methon_2());
// System.out.println(methon_3());
// System.out.println(methon_4());
// System.out.println(methon_5());
// System.out.println(methon_6());
// methon_7();
// methon_8();
// methon_9();
methon_10();
}
/**
*
* @author zhangyu
* @date 2021/8/17 12:41 下午
* @return boolean
* 判断一个四个字母的字符串中间字母是否是元音
*/
public static boolean methon_1(){
String a = "bopl";
boolean A = a.matches("b[aeiouAEIOU]{2,}l");
return A;
}
/**
*
* @author zhangyu
* @date 2021/8/17 11:31 下午
* @return boolean
* 判断一个字符串中是否含有数字
*/
public static boolean methon_2(){
String b = "a2c";
boolean B = b.matches("a[\\d]c");
return B;
}
/**
*
* @author zhangyu
* @date 2021/8/17 11:43 下午
* @return boolean
* 判断字符串中无数字
*/
public static boolean methon_3(){
String c = "asd";
boolean C = c.matches("[a-z][\\D][a-z]");
return C;
}
/**
*
* @author zhangyu
* @date 2021/8/17 11:46 下午
* @return boolean
* 判断一个字符串中,某个字符只能出现一次,或一次都没有
*/
public static boolean methon_4(){
String d = "ab";
boolean D = d.matches("a?b?");
return D;
}
/**
*
* @author zhangyu
* @date 2021/8/17 11:51 下午
* @return boolean
* 判断一个字符串中,某个字符串可有可无
*/
public static boolean methon_5(){
String e = "a";
boolean E = e.matches("ab*");
return E;
}
/**
*
* @author zhangyu
* @date 2021/8/17 11:55 下午
* @return boolean
* 判断一个字符串中,某个字符至少出现一次
*/
public static boolean methon_6(){
String f = "look";
boolean F = f.matches("o+");
return F;
}
/**
*
* @author zhangyu
* @date 2021/8/18 12:07 上午
* 使用String类切割功能
*/
public static void methon_7(){
String g = "wergghjkgll";
String [] G = g.split("g+");
for(int x =0; x < G.length ; x++){
System.out.println(G[x]);
}
}
/**
*
* @author zhangyu
* @date 2021/8/18 11:32 下午
* 使用字符串的替换功能replaceAll() 只有这个方法支持正则
*/
public static void methon_8(){
String h = "sdfghj23nfy5dssldi5";
String H = h.replaceAll("\\d","#");
System.out.println(H);
}
/**
*
* @author zhangyu
* @date 2021/8/18 11:58 下午
* 匹配出一句话中有四个字母的单词
*/
public static void methon_9(){
String str = "what is your name my name is Alina";
Pattern p = Pattern.compile("\\b[a-zA-Z]{4}\\b");
Matcher m = p.matcher(str);
while (m.find()){
System.out.println(m.group());}
}
public static void methon_10(){
String email = "abcd123@asd.com.cn";
boolean i = email.matches("[\\w]+@[a-z0-9]+(\\.[a-z]+)+");
System.out.println(i);
}
}