java 当中pattern.matcher(String a)的用法怎么解释的啊,我的pattern=getZm,
但是当a=getZmzd的时候,就是getZm.matcher(getZmzd)返回的是getZmzd
这个.matcher()什么意思
java里预留了一个regex库,方便于我们在java里操作正则表达式,或者用它来匹配字符串。
其中比较常用的就是 Pattern 和 Matcher ,pattern是一个编译好的正则表达式,而Mather是一个正则表达式适配器,Mather的功能很强大,所以我们一般用pattern 来获取一个Matcher对象,然后用Matcher来操作正则表达式。先看一下这两个类的用法吧、
Pattern
创建pattern的对象是很简单的,但是由于pattern的构造方法是用private声明的,所以我们仅能通过工厂模式的compile方法来返回一个Pattern的对象。
Pattern pattern = Pattern.compile("[abc]");
compile可以接收一个正则表达式作为参数。
接下来我们创建一个Matcher对象。Matcher的构造方法也是一个private方法,但是我们可以通过Pattern的Matcher方法来返回一个Matcher对象。
Matcher matcher = pattern.matcher("hello abc");
这里matcher可以接收一个字符串作为参数,准确的说这里所接收的参数类型是CharSequences接口类型的参数,但是String、StringBuffer、StringBuilder还有CharBuffer都实现了CharSequence接口,因此我们向里面传入这四种任何我们需要的参数。
与此同时Pattern还提供了一个matches 静态方法,它允许我们传入一个String类型的正则表达式和一个String类型的需要匹配的字符串,并返回一个boolean类型的值,这个方法的好处在于我们可以不用创建pattern对象和matcher对象就可以知道所传入的正则表达式能不能匹配所传入的字符串。
boolean bool = Pattern.matches("\w+","hello abc");
这个人写的:https://www.cnblogs.com/haodawang/p/5967219.html
这是正则表达式Pattern.compile("a*b");这个是规范
Matcher m = p.matcher("aaaaab"); 这个是被测试的内容
看这个你就明白了.
//判断是否是数字.你可以填写其它的规则;
Pattern p = Pattern.compile("\d+"); //需要要判断的字符串; Matcher m = p.matcher("1234532323"); if(m.matches()) { System.out.println("正确,是由数字组成的"); }else { System.out.println("错误,不是由数字组成的"); }
http://blog.csdn.net/yin380697242/article/details/52049999
Matcher Java的一个类啊
声明:public final class Matcher extends Object implements MatchResult
Matcher 类有final 修饰,可知他不能被子类继承。
含义:匹配器类,通过解释 Pattern 对 character sequence 执行匹配操作的引擎。
注意:此类的实例用于多个并发线程是不安全的。
根据字面理解,Matcher就是匹配器
而Pattern是模式。
模式就相当于是一个格式的范本。
比如
a*b就代表了a+任意字符+b,比如a1b aab awb 等等,这个模式的定义,叫做正则表达式(Regex,或者叫Regular Expression)
Pattern经过编译(Compile)得到一个匹配器(Matcher)
编译的过程是构造了一个有穷自动机(DFA)
Matcher就是包含了这个DFA的对象,因此,调用它的ismatch方法就可以判断你的输入字符串是否和模式匹配。
在Java里面是正则表达式里面的 用来返回匹配的group
用来返回匹配的group
String regex=
"";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(response);
List nvl=new ArrayList();
while (m.find()) {
if(m.group(2).equals("ctl00_ASPxSplitter2_ContentPlaceHolder1_SearchPages_txtCTNNO_Raw")) {
nvl.add(new NameValuePair(m.group(2), "CAIU8768722"));
}
else {
nvl.add(new NameValuePair(m.group(2), m.group(5)));
}
// System.out.println(m.group(1));
// System.out.println(m.group(2));
// System.out.println(m.group(3));
// System.out.println(m.group(4));
// System.out.println(m.group(5));
//
// System.out.println();
}
大概就这么用
matches()是全部匹配,是将整个输入串与模式匹配,如果要验证一个输入的数据是否为数字类型或其他类型,一般要用matches()
Matcher matcher = pattern.matcher("hello abc");
这里matcher可以接收一个字符串作为参数,准确的说这里所接收的参数类型是CharSequences接口类型的参数,但是String、StringBuffer、StringBuilder还有CharBuffer都实现了CharSequence接口,因此我们向里面传入这四种任何我们需要的参数。
不用管它的连调,你只需关心调用某个方法之后,得到的是一个什么类型对象,然后这个类型里面有什么方法,就可以继续调用。
// 正则表达式
Pattern pattern = Pattern.compile("[a-zA-Z]+(\\d+)[a-zA-Z]+");
// 待匹配的字符串
String str = "sfsaAAFDSFV234253FSSWDsdfa";
// 匹配器
Matcher matcher = pattern.matcher(str);
// 判断待匹配的字符串能否用正则表达式匹配
if (matcher.find()) {
// 获取匹配上的分组信息,也就是正则表达式小括号里面的内容,多个的话往下取,从1开始
System.out.println(matcher.group(1));
}
打印结果:234253
正则表达式的处理方式:实例化pattern(规则),匹配序列(文案),得出匹配的结果(Matcher),在匹配的结果里查找匹配出的各种结果find()//匹配到了,group()//分组
尝试对整个目标字符展开匹配检测,也就是只有整个目标字符串完全匹配时才返回真值
pattern.matcher(String a)
正则表达式里面用来处理内容的,
参考:
http://www.runoob.com/java/java-regular-expressions.html
利用Pattern对象的matcher()生成Matcher对象,利用Matcher对象来进行一系列操作
Matcher matcher = pattern.matcher("abcdefg");参数为用于匹配的字符串
结论:Pattern与Matcher一起合作.Matcher类提供了对正则表达式的分组支持,以及对正则表达式的多次匹配支持. 单独用Pattern只能使用Pattern.matcher(String regex,CharSequence input)一种最基础最简单的匹配。
java正则表达式通过java.util.regex包下的Pattern类与Matcher类实现(建议在阅读本文时,打开java API文档,当介绍到哪个方法时,查看java API中的方法说明,效果会更佳).
Pattern类用于创建一个正则表达式,也可以说创建一个匹配模式,它的构造方法是私有的,不可以直接创建,但可以通过Pattern.complie(String regex)简单工厂方法创建一个正则表达式,
Java代码示例:
Pattern p=Pattern.compile("\w+");
p.pattern();//返回 \w+
pattern() 返回正则表达式的字符串形式,其实就是返回Pattern.complile(String regex)的regex参数
1.Pattern.split(CharSequence input)
Pattern有一个split(CharSequence input)方法,用于分隔字符串,并返回一个String[],我猜String.split(String regex)就是通过Pattern.split(CharSequence input)来实现的.
Java代码示例:
Pattern p=Pattern.compile("\d+");
String[] str=p.split("我的QQ是:456456我的电话是:0532214我的邮箱是:aaa@aaa.com");
结果:str[0]="我的QQ是:" str[1]="我的电话是:" str[2]="我的邮箱是:aaa@aaa.com"
2.Pattern.matcher(String regex,CharSequence input)是一个静态方法,用于快速匹配字符串,该方法适合用于只匹配一次,且匹配全部字符串.
Java代码示例:
Pattern.matches("\d+","2223");//返回true
Pattern.matches("\d+","2223aa");//返回false,需要匹配到所有字符串才能返回true,这里aa不能匹配到
Pattern.matches("\d+","22bb23");//返回false,需要匹配到所有字符串才能返回true,这里bb不能匹配到
3.Pattern.matcher(CharSequence input)
说了这么多,终于轮到Matcher类登场了,Pattern.matcher(CharSequence input)返回一个Matcher对象.
Matcher类的构造方法也是私有的,不能随意创建,只能通过Pattern.matcher(CharSequence input)方法得到该类的实例.
Pattern类只能做一些简单的匹配操作,要想得到更强更便捷的正则匹配操作,那就需要将Pattern与Matcher一起合作.Matcher类提供了对正则表达式的分组支持,以及对正则表达式的多次匹配支持.
Java代码示例:
Pattern p=Pattern.compile("\d+");
Matcher m=p.matcher("22bb23");
m.pattern();//返回p 也就是返回该Matcher对象是由哪个Pattern对象的创建的
4.Matcher.matches()/ Matcher.lookingAt()/ Matcher.find()
Matcher类提供三个匹配操作方法,三个方法均返回boolean类型,当匹配到时返回true,没匹配到则返回false
matches()对整个字符串进行匹配,只有整个字符串都匹配了才返回true
Java代码示例:
Pattern p=Pattern.compile("\d+");
Matcher m=p.matcher("22bb23");
m.matches();//返回false,因为bb不能被\d+匹配,导致整个字符串匹配未成功.
Matcher m2=p.matcher("2223");
m2.matches();//返回true,因为\d+匹配到了整个字符串
我们现在回头看一下Pattern.matcher(String regex,CharSequence input),它与下面这段代码等价
Pattern.compile(regex).matcher(input).matches()