- 1⃣️匹配以020-加上8位数字的字符串,如果字符串以020-开头,后面是8位数字,则匹配成功
- 2⃣️java的split的要注意的一个问题
- 3⃣️把出现英语的地方全部换成“钱”
- 4⃣️成组匹配,必须一组一组的匹配
- 5⃣️⚠️⚠️⚠️匹配规则⚠️⚠️⚠️
- 6⃣️Pattern和Matcher的用法
- 7⃣️group分组
public static void main(String[] args) {
String pattern = "020-\d{8}";
System.out.println("请输入一个广州的电话号码");
Scanner sc = new Scanner(System.in);
while (sc.hasNextLine()){
String line = sc.nextLine();
if (line.matches(pattern)){
System.out.println("请火速汇款30万元以立即购买,否则失去发财机会!!");
System.out.println("请再次输入");
}else {
System.out.println("输入的电话号码无效");
System.out.println("请再次输入");
}
}
}
2⃣️java的split的要注意的一个问题
public static void main(String[] args) {
String p = "\.";
String str = "fkit.org";
String[] res1 = str.split(p);//以.作为分隔符
String[] res2 = str.split(".");//以任意字符作为分隔符,正则表达式中,"."匹配任何字符
System.out.println(res2.length==0);// true,因为是以任意字符为分隔符,所以根本分解不了!!
System.out.println("以.作为分隔符");
for(var i:res1){
System.out.println(i);
}
System.out.println("以任意字符作为分隔符,因此res2是null,正则表达式中,"."匹配任何字符");
for (var i:res2){
System.out.println(i);
}
}
Java对正则表达式的支持
String 类:
matches(regex):判断该字符串是否匹配正则表达式
split(regex):根据指定分隔符将字符串分割成多段
replaceAll(regex,replacement):将regex匹配的内容替换replacement
public static void main(String[] args) {
String s = "我爱Java,我爱凤姐,我爱编程";
String r = s.replaceAll("[a-zA-Z]+", "钱");
System.out.println(r);
}
4⃣️成组匹配,必须一组一组的匹配
public static void main(String[] args) {
System.out.println("abc".matches("(abc){1,2}"));
System.out.println("abcc".matches("(abc){1,2}"));
System.out.println("abcabc".matches("(abc){1,2}"));
}
5⃣️⚠️⚠️⚠️匹配规则⚠️⚠️⚠️
{m,n} 前面的字符出现m~n次
{m,}前面的字符出现m~∞次
{,n}前面的字符出现0~n次
{n}前面的字符出现n次
^开头
$结尾
. 代表任意一个字符
d 代表任意一个数字 digit
D 代表任意一个非数字
w 代表任意一个单词
W 代表任意一个非单词
s 代表任意一个空白
S 代表任意一个非空白
[a-d] 范围:代表a、b、c、d任一字符
[adm] 枚举,代表a、d、m其中任一字符
[am4-6] 混合:代表a、m、4、5、6任一字符
[^a-d] 求否,代表不是a、b、c、d其中任一字符
[a-g&&[^c-e]]:求与,表示a、b、f、g其中任一一个字符
? :前面的字符可以出现0~1次
例如:a?b 可以代表b,ab
*:前面的字符出现0~N次
例如
1⃣️ a*b可以代表b,ab,aaab,aaaab
2⃣️ d * 5可以代表5,345,345345
3⃣️[0-1]*5可以代表5,00005,01101015
+:前面的字符出现1~N次
a+b:可以代表ab,aaab,aaaaaaaab
d+5可以代表345,345345
[0-1]+5可以代表000005,01101015
成组:
(abc){1,2}可以代表:abc,abcabc
((abc)|(123))* : 可以代表"" , abc123
((abc) * | (123)*):可以代表"" , abcabc , 123123
用于实现从文本中提取有效的信息,比如手机号码,提取之后随意使用
Pattern就代表了正则表达式
String s = "1(([35][0-9])|(47)|(9[0-35-9]))\d{8}";//电话号码
Pattern p = Pattern.compile(s);//编译一个正则表达式
Matcher m = p.matcher(line);//假设line是一个io流中一行一行读取的String的java对象
// Matcher的创建对象这一行就代表了从line中提取出p正则表达式匹配的字符串!!!
7⃣️group分组
传送门:该笔记参考的页面



