这篇文章通过实现5个小功能,来讲述在Java中如何使用正则。

Java中如何使用正则

Java中正则相关类位于java.util.regex包下,主要使用2个类,如下:

5个小功能掌握正则表达式的使用_正则表达式

Pattern类:

Pattern是正则表达式regex的编译表示形式

5个小功能掌握正则表达式的使用_Java_02

Matcher类:

通过解释Pattern对输入的字符串input执行匹配操作的引擎

5个小功能掌握正则表达式的使用_正则表达式_03

注意:在Java代码中转义字符“\”要写成“\\”才表示一个“\”。

比如regex=\d,在Java代码中应该写成“\\d”。

下面我们通过几段Java代码来感受一下,除了功能1的代码是完整代码外,其余功能代码,我只给出main()方法。

功能1:判断给定的字符串是否与给定的正则表达式完全匹配

5个小功能掌握正则表达式的使用_字符串_04

说明:matches()方法,尝试将整个区域与模式匹配。

regex=\w+表示匹配至少一个字母或者数字或下划线[a-zA-z0-9_],所以字符串“HelloWord”与这个正则完全匹配。

功能2:判断给定的字符串是否包含至少一个数字

5个小功能掌握正则表达式的使用_正则表达式_05

说明:find()方法,尝试查找与该模式匹配的输入序列的下一个子序列,如果存在多个子串,find()方法能找到所有符合条件的子串。

regex=\d+表示匹配至少一个数字,所以字符串“HelloWord,666!”可以匹配这个正则。

4、功能3:从给定的字符串里找出所有的数字子串

5个小功能掌握正则表达式的使用_字符串_06

说明:group()方法,返回在以前匹配操作期间由给定组捕获的输入子序列。即通过find()方法找到的符合条件的子串可以通过group()方法获取。

regex=\d+表示匹配至少一个数字,字符串“HelloWord,666,888!”可以匹配这个正则2次,通过group()方法获取到了匹配的数字666与888。

功能4:把给定的字符串里的所有数字替换为星号“*”

5个小功能掌握正则表达式的使用_正则_07

说明:replaceAll()方法,替换模式与给定字符串相匹配的输入序列的每个子序列。即通过replaceAll()方法把符合条件的子串替换成replaceAll()方法中的参数。

regex=\d+表示匹配至少一个数字,字符串“Beijing 666,China 888!”可以匹配这个正则2次,通过replaceAll(“*”)方法把匹配的数字666与888替换成了***,因此替换后的字符串为“Beijing ***,China ***!”。

功能5:把给定的字符串通过正则表达式进行拆分

5个小功能掌握正则表达式的使用_正则表达式_08

说明:String的split()方法,根据给定正则表达式的匹配拆分此字符串。

字符串“Beijing010shanghai021tianjin022!!!”可以匹配3次regex=\d+,通过split()方法按数字进行拆分,拆分出4组内容,分别是“Beijing”, “shanghai”, “tianjin”, “!!!”。

通过以上5个功能代码段,对Java开发中如何使用正则表达式应该有了一个较为清晰的认识。