这是个小知识点,无论哪个语言,这些什么\d,\D,\s,\S等规则都是一样的。我就不多说了。自己查看一下百度也就好了。
我把以前写的这部分知识直接复制过来
import java.util.Scanner;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class RegexTest {
public static void main(String[] args){
/*
Regular有规律的 Expression表达式
正则表达式regex
一个带有一定规律的表达式
匹配字符串格式的
正则表达式通常的作用如下:
1.字符串的格式校验 String类中提供的一个方法 boolean = str.matches("regex");
2.字符串的拆分及替换 String类中提供的方法 replace split
3.字符串的查找 Pattern模式 Matcher匹配器 用匹配器去匹配模式,看能否匹配上
如下的所有都用来描述字符的信息(有还是没有该字符)
[abc] abc中的一个
[^abc] 不能是abc中的一个,其他都可以
[a-zA-Z] 必须是这两个范围内的
[a-z&&[^bc]] 表示a-z其中的一个但不能是b和c
. 代表任意一个字符
\d 代表[0-9]
\D 代表[^0-9]
\s space留白,一个空格 一个回车 一个换行等
\S 非留白
\w word [0-9A-Za-z] 数组或字母都可以
\W 非word [^0-9A-Za-z]
如下的所有都用来描述字符出现的次数
? 表示0次或一次 [0-9]?
* 表示0-n次
+ 表示1-n次
{n} 表示固定n次 (身份证号、手机号、邮编等)
{n,} 至少出现n次
{m,n} m-n次
*/
Scanner input = new Scanner(System.in);
System.out.println("请输入字符串");
String str = input.nextLine();
// 判断输入的str字符串内容是否满足什么样的格式
boolean result = str.matches("a[abc]"); // 第一个字母必须是a,第二个字母是abc中的一个
System.out.println("regex:a[abc]: " + result);
result = str.matches("a[^abc]"); // 第一个是a,第二个是非abc的任意的其他一个
System.out.println("regex:a[^abc]: " + result);
result = str.matches("a[a-zA-Z]"); // 第一个是a,第二个是范围内的任意一个
System.out.println("regex:a[a-zA-Z]: " + result);
result = str.matches("a[a-z&&[^bc]]"); // 第一个是a,第二个a-z都可以,但不能是b和c
System.out.println("regex:a[a-z&&[^bc]]" + result);
// 查找
// 1.利用Pattern类创建一个模式,理解为是一个正则表达式对象
Pattern pattern = Pattern.compile("\\d{6}"); // 邮编
// 2.需要提供一个字符串
String string = "123456retwrtw456789qwr123456";
// 3.利用pattern模式对象创建一个匹配器
Matcher matcher = pattern.matcher(string);
// 4.找寻字符串中出现满足上述格式的字符串
while(matcher.find()){
System.out.println(matcher.group()); // 找到满足字符串格式的那一串字符串
}
}
}