0


38、Java 中的正则表达式(单字符匹配和预定义字符)

文章目录

一、需求

❓ 现有一个字符串,需满足如下要求:
[6, 18] 个字符
② 只能包含字母、数字、下划线
③ 需以字母开头
❓ 如果字符串满足上述要求,返回 true,否则返回 false

publicstaticbooleanvalidString(String s){return s.matches("[a-zA-Z][a-zA-Z0-9_]{5,17}");}

🍀 正则表达式用极简的规则取代了复杂的验证逻辑
🍀 Regex Expression
🍀 正则表达式是一种通用的技术,适用于多种编程语言

二、单字符匹配(6个)

✏️ ①

[abc]

:字符串的某个位置(某一个字符)满足 a、b、c 中的一个

🍀

某个位置

:该【单字符匹配】放的位置

publicclassTestDemo{publicstaticvoidmain(String[] args){String regex ="[zgq]";System.out.println("z".matches(regex));// trueSystem.out.println("g".matches(regex));// trueSystem.out.println("q".matches(regex));// trueSystem.out.println("zgq".matches(regex));// false}}
publicclassTestDemo{publicstaticvoidmain(String[] args){String regex ="26[abc]3q";System.out.println("26a3q".matches(regex));// trueSystem.out.println("26abc".matches(regex));// falseSystem.out.println("26b3q".matches(regex));// true }}

✏️ ②

[^abc]

:除了 a、b、c 之外的任意单个字符

publicclassTestDemo{publicstaticvoidmain(String[] args){String regex ="[^cat]666";System.out.println("c666".matches(regex));// falseSystem.out.println("a666".matches(regex));// falseSystem.out.println("t666".matches(regex));// falseSystem.out.println("bb666".matches(regex));// falseSystem.out.println("b666".matches(regex));// true}}
publicclassTestDemo{publicstaticvoidmain(String[] args){String regex1 ="[12345]666";String regex2 ="[^1-5]666";System.out.println("1666".matches(regex1));// trueSystem.out.println("3666".matches(regex1));// trueSystem.out.println("5666".matches(regex1));// trueSystem.out.println("6666".matches(regex1));// falseSystem.out.println("1666".matches(regex2));// falseSystem.out.println("3666".matches(regex2));// falseSystem.out.println("5666".matches(regex2));// falseSystem.out.println("6666".matches(regex2));// true}}

✏️ ③

[a-zA-z]

:匹配单个英文字母

publicclassTestDemo{publicstaticvoidmain(String[] args){String regex ="[a-zA-Z]666";System.out.println("6666".matches(regex));// falseSystem.out.println("b666".matches(regex));// true}}

✏️ ④

[a-d[1-6]]

:和

[a-d1-6]

一样(并集)

publicclassTestDemo{publicstaticvoidmain(String[] args){String regex1 ="[a-d[1-6]]";String regex2 ="[a-d1-6]";System.out.println("a".matches(regex1));// trueSystem.out.println("e".matches(regex1));// falseSystem.out.println("1".matches(regex1));// trueSystem.out.println("7".matches(regex1));// falseSystem.out.println("a".matches(regex2));// trueSystem.out.println("e".matches(regex2));// falseSystem.out.println("1".matches(regex2));// trueSystem.out.println("7".matches(regex2));// false}}

✏️ ⑤

[zgq&&[god]]

:交集

publicclassTestDemo{publicstaticvoidmain(String[] args){String regex1 ="[zgq&&[god]]";System.out.println("q".matches(regex1));// falseSystem.out.println("d".matches(regex1));// falseSystem.out.println("g".matches(regex1));// true}}

✏️ ⑥

[zgq&&[god]]

:取差集

publicclassTestDemo{publicstaticvoidmain(String[] args){String regex1 ="[zgq&&[^god]]";System.out.println("q".matches(regex1));// trueSystem.out.println("d".matches(regex1));// falseSystem.out.println("g".matches(regex1));// falseSystem.out.println("z".matches(regex1));// true// 取差集, 从字母 a 到字母 z 中去除字母 b 和 dString regex2 ="[a-z&&[^bd]]";System.out.println("d".matches(regex2));// falseSystem.out.println("a".matches(regex2));// true}}

三、预定义字符(7个)

预定义字符匹配的仍然是单个字符

📝 【**.】:任意单个字符
📝 【
\d】:数字
📝 【
\D】:非数字
📝 【
\s】:空白
📝 【
\S】:非空白
📝 【
\w】:字母(英文字母、下划线、数字)
📝 【
\W**】:非英文字母

🍀 Java 中需以两个【\】开头表示预定义字符

publicclassTestDemo{publicstaticvoidmain(String[] args){String r1 =".";System.out.println("@".matches(r1));// trueSystem.out.println("庆".matches(r1));// trueSystem.out.println("I".matches(r1));// trueSystem.out.println(" ".matches(r1));// trueSystem.out.println(".".matches(r1));// true}}
publicclassTestDemo{publicstaticvoidmain(String[] args){// 匹配 java 文件String r1 =".\\.java";System.out.println("a.java".matches(r1));// trueSystem.out.println("xjava".matches(r1));// falseSystem.out.println("5java".matches(r1));// false}}
publicclassTestDemo{publicstaticvoidmain(String[] args){String r1 ="[abc]";String r2 ="\\[abc\\]";System.out.println("a".matches(r1));// trueSystem.out.println("c".matches(r1));// trueSystem.out.println("[abc]".matches(r1));// falseSystem.out.println("a".matches(r2));// falseSystem.out.println("c".matches(r2));// falseSystem.out.println("[abc]".matches(r2));// true}}
结束!如有错误,请不吝赐教

本文转载自: https://blog.csdn.net/m0_54189068/article/details/127505993
版权归原作者 JavaLearnerZGQ 所有, 如有侵权,请联系我们删除。

“38、Java 中的正则表达式(单字符匹配和预定义字符)”的评论:

还没有评论