在java中使用正则表达式处理文本数据
a98b c0912d c10b a12345678d AB
我们仔细分析上面五个字符串,我们可以看到,他们有一个共同的特点,那就是,第一个字符必须be'a'or'c ',最后一个字符必须be'b'or会',和中间的字符组成的任意数量的数字,包括0个数字。所以,我们可以抽象出五弦的共同特征,产生一个正则表达式:{交流} D * { BD }。根据这个正则表达式,我们可以写出满足条件的字符串无限。
有很多方法可以使用java正则表达式,和最简单的方法是使用一个字符串和一个字符串。有四种方法可以在字符串中使用正则表达式,这是比赛,分裂,替换,和replacefirst。
一、匹配法
匹配方法可以确定当前字符串是否匹配给定的正则表达式。如果匹配匹配,则返回true,否则返回false:
复制代码代码如下所示:
公共布尔匹配(字符串的正则表达式)
我们可以使用下面的程序来验证上面给出的正则表达式。
字符串{} SS =新的字符串{ } {a98b
对于(字符串S:SS)
(s.matches System.out.println({交流} D * { BD }));
输出结果:
真正的
真正的
真正的
真正的
真正的
下面是正则表达式的意义,一个简单的解释。如果我们学会了编译原理词法分析,就容易理解上面的正则表达式,因为正则表达式的表达在词法分析是类似的表达。在{…}等效或| 例如,正则表达式的开始是{交流},这意味着一个字符串的开头只能是A或C的{ BD }表达式字符串结束只有B或D.在 D 0-9的表达中,由于在正则表达式中具有特殊的意义,所以 。*和*表明有0或无穷多的(这是在词法分析称为*关闭),因为* F其次 D,有0个或无穷多个数。
二分裂法
拆分方法使用正则表达式来划分字符串,并以字符串数组的形式返回分区的结果:
字符串(字符串的正则表达式){ }分裂
字符串(字符串的正则表达式{}分裂,int的限制)
例如,下面的代码将使用第一个重载的拆分形式分割HTTP请求头的第一行,代码如下:
String s =得到 / / index.html HTTP 1.1;
输入的字符串{ } = s.split(+);
对于(字符串)
System.out.println(STR);
输出结果:
得到
/ index.html
http 1.1
应注意在使用分裂的第一重形式支付,如果最后一个字符串在字符串拆分,将被忽略。如果正则表达式 D用于将字符串a0b1c3456,数组的长度是3,不是7。
在第二类重载形式中,有三种情形需要讨论一个极限参数:
1。大于0:如果限制值为n,则正则表达式将使用n-1次,以下代码:
String s =a0b1c3456 ;
输入的字符串{ } = s.split(
对于(字符串)
System.out.println(STR);
输出结果:
一
B
c3456
从程序的输出可以看出,只有a0b1c3456两次运用正则表达式,也不扫描字符'1',但是没有字符串符合条件的,将在后面的字符串作为一个整体,作为最后一个数组的值。
2:忽略字符串结尾处不少于0个。也就是说,上面的例子返回一个长度为7的数组,而不是3。
三.等于0:这是默认值,相当于第一种重载的分裂。
三、简单的方法,replacefirst
这两种方法的定义如下:
字符串(字符串替换正则表达式、字符串替换)
字符串(字符串的正则表达式,replacefirst字符串替换)
这两种方法替换当前字符串替换,正则表达式匹配的字符串。使用的方法很简单,这里不再详细,有兴趣的读者可以参考相关的文件。