Java中如何使用正则表达式处理文本数据

  介绍

这篇文章主要为大家展示了“Java中如何使用正则表达式处理文本数据”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Java中如何使用正则表达式处理文本数据”这篇文章吧。

正则表达式就是一个字符串,但和普通的字符串不同的是,正则表达式是对一组相似字符串的抽象,如下面的几个字符串:

a98b ,c0912d ,c10b ,a12345678d ,ab

我们仔细分析上面五个字符串,可以看出它们有一个共同特征,就是第一个字符必须是& # 39;一个# 39;或& # 39;c # 39;,最后一个字符必须是& # 39;b # 39;或& # 39;d # 39;,而中间的字符是任意多个数字组成(包括0个数字)。因此,我们可以将这五个字符串的共同特点抽象出来,这就产生了一个正则表达式:(ac) \ \ d * (bd)。而根据这个正则表达式,我们可以写出无穷多个满足条件的字符串。

在Java中使用正则表达式的方法非常多,最简单的就是和字符串一起使用。在字符串中有四个方法可以使用正则表达式,它们是匹配,分裂,replaceAll和replaceFirst。

<强>一、匹配方法

匹配方法可以判断当前的字符串是否匹配给定的正则表达式。如果匹配,返回真,否则,返回false.matches方法的定义如下:

公共布尔匹配正则表达式(String)

如上面给出的正则表达式我们可以用如下程序验证。

& lt; ! - - - - -在String [], ss =, new  String [] {“a98b",,“c0912d",,“c10b",,“a12345678d",,“ab"};   (String 销售:,ss)   ,System.out.println (s.matches (“(ac) \ \ d * (bd)“));

输出结果:




真真正

下面简单解释一下这个正则表达式的含义。如果我们学过编译原理的词法分析,就会很容易理解上面的正则表达式(因为正则表达式的表示方法和词法分析中的表达式类似)。如在[…]中的相当于或“|”,如(abcd)相当于c b | | | d,也就是a或b或c或d。如上面的正则表达式的开头部分是(ac),就代表着字符串的开头只能是一个或c。(bd)表达字符串结尾只能是b或d。而中间的\ d表达0 - 9的数字,由于\在正则表达式中有特殊含义,所以用\ \来表示\。而*表示有0或无穷多个(这在词法分析中叫*闭包),由于*跟在\ d后面,因此表达有0或无穷多个数字。

<强>二、分裂方法

分裂方法使用正则表达式来分割字符串,并以字符串数组的形式返回分割结果.split有两种重载形式,它们定义如下:

& lt; !——祝辞public  String[],分裂(String 正则表达式)   public  String[],分裂(String 正则表达式,int 限制)

如下面的代码将使用分割的第一种重载形式来分割HTTP请求头的第一行,代码如下:

& lt; !——祝辞String  s =,“GET /index.html  HTTP/1.1“;   String 党卫军[],=,s.split (“,”+“);   (String  str: ss)   System.out.println (str);

输出结果:


/index . html
HTTP/1.1

在使用分割的第一种重载形式时应注意,如果分割后的字符串最后有空串,将被忽略。如使用正则表达式\ d来分割字符串a0b1c3456时,得到的数组的长度为3,而不是7。

在分裂的第二种重载形式中有一个限制参数,要分三种情况讨论:

1。大于0:如极限的值为n,那么将对正则表达式使用n - 1次、下面的代码:

& lt; !——祝辞String  s =,“a0b1c3456";   String 党卫军[],=,s.split (“\ \ d",, 3);   (String  str: ss)   System.out.println才能(str);

输出结果:


b
c3456

从输出结果可以看的出,程序只对“a0b1c3456"使用了两次正则表达式,也就是在少扫描完字符& # 39;1 & # 39;后,不管后面有没有满足条件的字符串,都将后面的字符串作为一个整体来作为返回数组的最后一个值。

2。小于0:不忽略结尾的空串。也就是上面的例子返回数组的长度应该是7,而不是3。

3。等于0:这是默认值,相当于分裂的第一种重载形式。

<强>三,replaceAll和replaceFirst方法

为两个方法的定义如下:

public  String  replaceAll (String 正则表达式,String 更换)   public  String  replaceFirst (String 正则表达式,String 替代)

这两个方法用替代替换当前字符串中和正则表达式匹配的字符串。

Java中如何使用正则表达式处理文本数据