没有合适的资源?快使用搜索试试~ 我知道了~
首页Java实现字符串匹配(基于正则)
Java实现字符串匹配(基于正则)
6.4k 浏览量
更新于2023-03-03
评论
收藏 82KB PDF 举报
主要介绍了Java中使用正则表达式实现字符串匹配,字符串查找,匹配,替换,正则无不能做,特别是灵活的运用子串匹配,感兴趣的小伙伴们可以参考一下
资源详情
资源评论
资源推荐

Java实现字符串匹配(基于正则)实现字符串匹配(基于正则)
主要介绍了Java中使用正则表达式实现字符串匹配,字符串查找,匹配,替换,正则无不能做,特别是灵活的
运用子串匹配,感兴趣的小伙伴们可以参考一下
有一个String,如何查询其中是否有y和f字符?最黑暗的办法就是:
程序程序1::我知道我知道if、、for语句和语句和charAt()
class Test{
public static void main(String args[]) {
String str="For my money, the important thing "+"about the meeting was bridge-building";
char x='y';
char y='f';
boolean result=false;
for(int i=0;i<str.length;i++){
char z=str.charAt(i); //System.out.println(z);
if(x==z||y==z) {
result=true;
break;
}
else result=false;
}
System.out.println(result);
}
}
好像很直观,但这种方式难以应付复杂的工作。如查询一段文字中,是否有is?是否有thing或ting等。这是一个讨厌的工
作。
Java的java.util.regex包
按照面向对象的思路,把希望查询的字符串如is、thing或ting封装成一个对象,以这个对象作为模板去匹配一段文字,就
更加自然了。作为模板的那个东西就是下面要讨论的正则表达式。先不考虑那么复杂,看一个例子: 程序2:不懂。先看看可
以吧?
import java.util.regex.*;
class Regex1{
public static void main(String args[]) {
String str="For my money, the important thing "+"about the meeting was bridge-building";
String regEx="a|f"; //表示a或f
Pattern p=Pattern.compile(regEx);
Matcher m=p.matcher(str);
boolean result=m.find();
System.out.println(result);
}
}
如果str匹配regEx,那么result为true,否则为flase。如果想在查找时忽略大小写,则可以写成:
Pattern p=Pattern.compile(regEx,Pattern.CASE_INSENSITIVE);
虽然暂时不知道Pattern(模板、模式)和Matcher(匹配器)的细节,程序的感觉就比较爽,如果先查询is、后来又要查
询thing或ting,我们只需要修改一下模板Pattern,而不是考虑if语句和for语句,或者通过charAt()。
1、写一个特殊的字符串——正则表达式如a|f。
2、将正则表达式编译成一个模板:p
3、用模板p去匹配字符串str。
思路清楚了,现在看Java是如何处理的(Java程序员直到JDK1.4才能使用这些类。
Pattern类与查找
①public final class java.util.regex.Pattern是正则表达式编译后的表达法。下面的语句将创建一个Pattern对象并赋值给
句柄p:Pattern p=Pattern.compile(regEx);
有趣的是,Pattern类是final类,而且它的构造器是private。也许有人告诉你一些设计模式的东西,或者你自己查有关资
料。这里的结论是:Pattern类不能被继承,我们不能通过new创建Pattern类的对象。
因此在Pattern类中,提供了2个重载的静态方法,其返回值是Pattern对象(的引用)。如:


















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0