编程语言
首页 > 编程语言> > 简析java中的正则表达式

简析java中的正则表达式

作者:互联网

一、简介

正则表达式可以用字符串来描述规则,并用来匹配字符串。

使用正则表达式的好处有哪些?一个正则表达式就是一个描述规则的字符串,所以,只需要编写正确的规则,我们就可以让正则表达式引擎去判断目标字符串是否符合规则。

正则表达式是一套标准,它可以用于任何语言。Java标准库的java.util.regex包内置了正则表达式引擎,在Java程序中使用正则表达式非常简单。

二、匹配规则

正则表达式的匹配规则是从左到右按规则匹配。我们首先来看如何使用正则表达式来做精确匹配。

对于正则表达式abc来说,它只能精确地匹配字符串"abc",不能匹配"ab","Abc","abcd"等其他任何字符串。

如果正则表达式有特殊字符,那就需要用\转义。例如,正则表达式a\&c,其中\&是用来匹配特殊字符&的,它能精确匹配字符串"a&c",但不能匹配"ac"、"a-c"、"a&&c"等。

要注意正则表达式在Java代码中也是一个字符串,所以,对于正则表达式a\&c来说,对应的Java字符串是"a\\&c",因为\也是Java字符串的转义字符,两个\\实际上表示的是一个\。

精确匹配实际上用处不大,因为我们直接用String.equals()就可以做到。大多数情况下,我们想要的匹配规则更多的是模糊匹配。我们可以用.匹配一个任意字符。如果我们只想匹配0~9这样的数字,可以用\d匹配。用\w可以匹配一个字母、数字或下划线,w的意思是word。用\s可以匹配一个空格字符,注意空格字符不但包括空格,还包括tab字符(在Java中用\t表示)。用\d可以匹配一个数字,而\D则匹配一个非数字。

例如,java\w可以匹配:

修饰符*可以匹配任意个字符,包括0个字符。修饰符+可以匹配至少一个字符。修饰符?可以匹配0个或一个字符。如果我们想精确指定n个字符怎么办?用修饰符{n}就可以。如果我们想指定匹配n~m个字符怎么办?用修饰符{n,m}就可以。如果没有上限,那么修饰符{n,}就可以匹配至少n个字符。

例如,A\d{3,5}可以精确匹配:

三、复杂匹配规则

用正则表达式进行多行匹配时,我们用^表示开头,$表示结尾。例如,^A\d{3}$,可以匹配"A001"、"A380"。

使用[...]可以匹配范围内的字符,例如,[123456789]可以匹配1~9,还有一种写法,直接写[1-9]就可以。[...]还有一种排除法,即不包含指定范围的字符。假设我们要匹配任意字符,但不包括数字,可以写[^0-9]*。

用|连接的两个正则规则是或规则,例如,AB|CD表示可以匹配AB或CD。可以使用括号更改正则表达式的计算顺序。

标签:字符,匹配,正则表达式,可以,修饰符,简析,字符串,java
来源: https://www.cnblogs.com/WildMiceBlogs/p/16332658.html