Java 基础笔记 正则表达式

本文列举为常用正则表达式的解释范例,想深入探索更多正则表达式请下载JDK API 中文版搜索 Pattern类。

概念:正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

正则表达式用法:String  变量名 = "正则表达式";

                             "判断字符串".matches(变量名);  //或 "判断字符串".matches("正则表达式");

若判断字符串符合正则表达式的要求则返回true,若不符合则返回false。

1.字符类

[ ]:表示一个字符

[abc]:只能是a,b,c其中一个字符

[^abc]:任何单个字符,除了a,b,c

[a-zA-Z]:a到z或A到Z,两头的字母包括在内

[a-d[m-p]]:a到d或m到p;等价于[a-dm-p](并集)

[a-z&&[def]]:d、e或f;(交集)

[a-z&&[^bc]]:a到z,除了b和c;等价于[ad-z](减去)

[a-z&&[^m-p]]:a到z,而非m到p;等价于[a-lq-z](减去)

2.预定义字符类

. (点):代表任意字符,几个点代表几个任意字符。  例:“ab”.matches("..");true

注:在Java中若 "0".matches("\d"),此时表达式会标红报错,因为在Java中\代表转义字符,所以想要表达"\d"则需要写成"\\d",其它以\开头的正则表达式同此规则。

\d  数字:等价于[0-9];     例: "0".matches("\\d");true

\D  非数字:等价于[^0-9];    例:"%".matches("\\D");true

\s  空白字符:等价于[ \t\n\x0b\f\r];  例:" ".matches("\\s");true。注意,一个Tab键等于四个空格,判断一个Tab键的时候返回true,但是手动输入四个空格时虽然和Tab键长度一样,但是返回false,因为[ ]只能表示一个字符。

\S  非空白字符:等价于[^\s];   例:“a”.matches("\\S");true

\w  单词字符:等价于[a-zA-Z_0-9];     例:"_".matches("\\w");true。  "%".matches("\\w");false。 注意:除了字符数字外,下划线                                                                                                                                                                    也属于单词字符。

\W  非单词字符:等价于[^\w];  例: "%".matches("\\W");true。   "_".matches("\\W");false。

3.数量词

X?        表示X所包含的字符出现一次或者一次也没有出现则返回true,出现别的则都返回false。 

例:"a".matches("[abc]?");true      "ab".matches("[abc]?");false       "".matches("[abc]?");true        " ".matches("[abc]?");false

X*         表示X所包含的字符出现0次到多次则返回true,如若出现不包含的字符则返回false。

例:"abab".matches("[abc]*");true | "aaaa".matches("[abc]*");true | "af".matches("[abc]*");false | "".matches("[abc]*");true

X+        表示X所包含的字符出现1次到多次则返回true,其它情况则false。  //此表达式和上个类似,只是除去了0次为空的情况。

X{n}      表示X所包含的字符恰好出现n次则返回true,超过或者少于或者别的情况则都是false。

例:"ababa".matches("[abc]{5}");true | "aaaa".matches("[abc]{5}");false | "bbbbb".matches("[abc]{5}");true | "abcabc".matches("[abc]{5}")false

X{n,}     表示X所包含的字符至少出现n次。 

例:"ababa".matches("[abc]{5,}");true | "aaaaaa".matches("[abc]{5,}");false

X{n,m}  表示X所包含的字符至少出现n次,但不超过m次,即也包括n和m次。

例:"ababa".matches("[abc]{5,9}");true | "ababacccc".matches("[abc]{5,9}");true | "aaaaaabbbb".matches("[abc]{5,9}");false

4.正则表达式的应用

①要求:将字符串中的所有数字去掉。

输出结果:

②要求:将字符串的“.”和重复叠字都去掉。

输出结果:

分析:第一个正则,"\\."是表示“.”,"\\.+"表示至少一个或多个的“.”,然后替换成""。

           第二个正则,"(.)"表示一个组,包含任意一个字符,"\\1"则表示必须与第一个括号内的内容一致,“+”表示出现一次或者多             次。

③Pattern和Matcher的结合使用

输出结果:

发布了30 篇原创文章 · 获赞 15 · 访问量 511

猜你喜欢

转载自blog.csdn.net/qq_40275740/article/details/104041520