javamatches
‘壹’ java中matchs()的用法
我就说,这个问题这么没人回答,原来是一个这么"泛"的问题,不好回答呀!简单跟你说一下吧,matchs()这个方法中需要传入一个参数,这个参数是一个字符串类型的。实际上,在执行的时候,JVM会把这个字符串参数理解成为正则表达式,然后实现正则匹配!正则匹配是一个大的议题,一点点篇幅说不清楚,你可以去想象一下你在使用系统搜索功能的时候,在搜索框中填写的东西,那个就是正则表达式。然后,还是给你一个示例把:
public class Test{
public static void main(String args[])
{
String str="abcdefg";
//检查"abcdefg"是否匹配"abcdefg"
System.out.println(str.matches("abcdefg"));
//检查"abcdefg"是否匹配"abc"
System.out.println(str.matches("abc"));
//检查"abcdefg"是否匹配 以abc开头 后接任意字符(可以为空)
System.out.println(str.matches("^abc.*"));
//检查"abcdefg"是否匹配 以abc开头,以字母结束(可以为空)
System.out.println(str.matches("^abc[a-z]*"));
//检查"abcdefg"是否匹配以任意字符开头,以abc作为结尾
System.out.println(str.matches(".*abc$"));
}
}
执行结果:
true
false
true
true
false
‘贰’ JAVA matches()与equals()有什么区别
matches: 判断字符是否与指定的 正则表达式 相匹配
equals : 判断两个字符串是否相等
举例:
1. matches
String str = "123abc";
String regex = "^[0-9]+[a-c]+$";
System.out.println(str.matches(regex));
2. equals
String str1 = "ABC";
String str2 = "ABC";
System.out.println(str1.equals(str2));
一个是判断是否符合正则表达式规则,另一个是判断是否两个字符串相等
‘叁’ java里.matches方法有什么用
java.lang包中的String类,java.util.regex包中的Pattern,Matcher类中都有matches()方法。
都与正则表达式有关。下面我分别举例:(字符串:"abc",正则表达式: "[a-z]{3}")
String类的方法:
boolean b = "abc".matches("[a-z]{3}"
System.out.println(b);
Pattern类中的方法:
boolean b = Pattern.matches("[a-z]{3}","abc");
System.out.println(b);
Matcher类中的方法:
Pattern p = Pattern.compile("[a-z]{3}");
Matcher m = p.matcher("acc");
boolean b =m.matches()
System.out.println(b)
‘肆’ java matches 作用
Java String.matches():字符串是否匹配给定的正则表达式
实例
下面的例子显示使用的java.lang.String.matches()方法.
import java.lang.*;
public class StringDemo {
public static void main(String[] args) {
String str1 = "tutorials", str2 = "learning";
boolean retval = str1.matches(str2);
// method gets different values therefore it returns false
System.out.println("Value returned = " + retval);
retval = str2.matches("learning");
// method gets same values therefore it returns true
System.out.println("Value returned = " + retval);
retval = str1.matches("tuts");
// method gets different values therefore it returns false
System.out.println("Value returned = " + retval);
}
}
编译和运行上面的程序,这将产生以下结果:
Value returned = false
Value returned = true
Value returned = false
‘伍’ java中matches的作用
在java里面有三个类有这个方法:一个是String类:matches里面写一个正则表达式,所有符合这个正规表达式的都会返回true。另一个是Matcher类:方法与String的类似。还有一个是Pattern类里面的matches()方法,这个方法没有参数,它的作用是尝试将整个区域与模式(即Pattern对象构造的正则表达式)匹配。
‘陆’ java中的matches()方法怎么用在哪一个包中
这是我的总结:
java.lang包中的String类,java.util.regex包中的Pattern,Matcher类中都有matches()方法。
都与正则表达式有关。下面我分别举例:(字符串:"abc",正则表达式: "[a-z]{3}")
String类的方法:
boolean b = "abc".matches("[a-z]{3}"
System.out.println(b);
Pattern类中的方法:
boolean b = Pattern.matches("[a-z]{3}","abc");
System.out.println(b);
Matcher类中的方法:
Pattern p = Pattern.compile("[a-z]{3}");
Matcher m = p.matcher("acc");
boolean b =m.matches()
System.out.println(b);
得到的结果都为true。
‘柒’ Java中正则Matcher类的matches,lookAt和find的区别
在Matcher类中有matches、lookingAt和find都是匹配目标的方法,但容易混淆,整理它们的区别如下:
matches:整个匹配,只有整个字符序列完全匹配成功,才返回True,否则返回False。但如果前部分匹配成功,将移动下次匹配的位置。
lookingAt:部分匹配,总是从第一个字符进行匹配,匹配成功了不再继续匹配,匹配失败了,也不继续匹配。
find:部分匹配,从当前位置开始匹配,找到一个匹配的子串,将移动下次匹配的位置。
reset:给当前的Matcher对象配上个新的目标,目标是就该方法的参数;如果不给参数,reset会把Matcher设到当前字符串的开始处。
使用示例代码来展示他们的区别更清晰明了:
packagenet.oseye;
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;
publicclassIOTest{
publicstaticvoid
main(String[]args){
Patternpattern=Pattern.compile("\d{3,5}");
StringcharSequence="123-34345-234-00";
Matchermatcher=pattern.matcher(charSequence);
//虽然匹配失败,但由于charSequence里面的"123"和pattern是匹配的,所以下次的匹配从位置4开始
print(matcher.matches());
//测试匹配位置
matcher.find();
print(matcher.start());
//使用reset方法重置匹配位置
matcher.reset();
//第一次find匹配以及匹配的目标和匹配的起始位置
print(matcher.find());
print(matcher.group()+"-"+matcher.start());
//第二次find匹配以及匹配的目标和匹配的起始位置
print(matcher.find());
print(matcher.group()+"-"+matcher.start());
//第一次lookingAt匹配以及匹配的目标和匹配的起始位置
print(matcher.lookingAt());
print(matcher.group()+"-"+matcher.start());
//第二次lookingAt匹配以及匹配的目标和匹配的起始位置
print(matcher.lookingAt());
print(matcher.group()+"-"+matcher.start());
}
publicstaticvoid
print(Objecto){
System.out.println(o);
}
}
输出结果:
false
4
true
123 - 0
true
34345 - 4
true
123 - 0
true
123 - 0
‘捌’ java Matches正则表达式问题
一个整数n如果是3的x次方,那把这个整数转换成3进制的字符串后只可能是:
1 3^0
10 3^1
100 3^2
...
1...x个0 3^x
所以,如果3进制字符串能够匹配1后跟0个或多个0,就说明n是3的某次方。
10*$就是匹配一个1后跟0个或多个0,然后是字符串结尾(用$来匹配)。
*表示匹配前面的模式0次或多次。
$表示匹配字符串的结尾。
‘玖’ JAVA String.matches的用法
如果仅仅是看a里面是否存在b,用a.contains(b)这个方法即可。
你用matchs方法当然也可以,但你那么写肯定是不行的。用a,matches(b),这个b要求是一个正则表达式,如果你一定要用这种方式判断,建议你了解一下正则表达式的相关语法,也很简单。