javamatch
㈠ 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实现javascript的match效果
Java 的正则表达式用法和 JavaScript 的类似。
但是正则表达式的写法略有不同。在 Java 中正则表达式源是当中普通字符串来对待的,不需要像 JavaScript 那样用“/.../”包裹,另外,特别要注意正则表达式转义字符是双斜杠(因为在 Java 中,斜杠已是字符串的转义字符,双斜杠才代表斜杠)。
至于使用的语法,常规情况下,需要用到 Pattern 类,下面是一个例子:
importjava.util.regex.Pattern;//导入regex包
importjava.util.regex.Matcher;
//publicclass...{
Patternp=Pattern.compile("Hello\w");//编译正则表达式
Matcherm=p.matcher("HelloWorld");//开始匹配字符串
while(m.find()){//只要匹配则循环
Stringresult=m.group();//返回匹配的子串
}
//}
但是有时候不用这么麻烦,String 类中有隐含的正则表达式匹配函数 matches() 和 split(),其中 split() 和 JavaScript 中的 match() 比较相似。下面是例子:
Strings="HelloAHelloBHelloC";
booleanbResult=s.matches("Hello[A-C]");//matches()仅返回逻辑判断结果
String[]strResults=s.split("Hello[A-C]");//split()可返回结果子串,放在数组当中
详细用法请参考 Java 语言手册。
http:// docs.oracle.com/javase/6/docs/api/java/lang/String.html
http:// docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html
㈢ java matches 正则表达式 匹配某个字符恰好出现n次
[2]代表字符串取值范围,{3}代表字符串的总长度 ,你换成"[2-3]{5}"就OK了
㈣ 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 matcher方法
看一下Pattern的matcher方法就知道了
/**
* Creates a matcher that will match the given input against this pattern.
* </p>
*
* @param input
* The character sequence to be matched
*
* @return A new matcher for this pattern
*/
public Matcher matcher(CharSequence input) {
if (!compiled) {
synchronized(this) {
if (!compiled)
compile();
}
}
Matcher m = new Matcher(this, input);
return m;
}
它返回的是一个新的Matcher对象, 再执行它的matches()方法.
遇到不懂的时候看看源代码就一目了然啦
㈥ 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类库中String类的match方法用法
纠正下,java中用到的是matchs,不是match,意思为比较两个值是否相等。举例:
String str = "1111111";
String str1 = "1111111";
System.out.println(str.matches(str1));//两个输出的值相等,所以是true
String format = "yyyy-MM-dd hh:mm:ss";
String time = "2010-07-13 03:30:50";
System.out.println(time.matches(format));//比较的是值不是类型,所有是false
输出结果:
㈧ 请问java高手,如何用String的matches()匹配只有(字母、数字、中文、半角@)的字符串啊感激不尽
packagetestDemo;
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;publicclassDemo
{
publicstaticvoidmain(Stringargs[]){//按指定模式在字符串查找
Stringline="1a我@163com";Stringpattern="[a-zA-Z0-9u4E00-u9FA5@]+";
//创建Pattern对象
Patternr=Pattern.compile(pattern);//现在创建matcher对象
Matcherm=r.matcher(line);
if(m.matches()){
System.out.println("inputvlueisOK");
}else{
System.out.println("NOMATCH");
}
}
}
㈨ java正则表达式判断一个字符前是否有一个字符
java使用match和pattern来实现判断字符串是否不含有某个字符,实例如下:
/**
* 判断字符串是否数值
* @param str
* @return true:是数值 ;false:不是数值
* @author:WD_SUHUAFU
*/
private boolean isNumber(String str)
{
Pattern pattern = Pattern.compile("^[0-9]+(.[0-9]*)?$");
Matcher match=pattern.matcher(str);
return match.matches();
}
㈩ java中怎么匹配字符串
匹配方式(其中每个方式对应RegUtil.java中的一个方法)代码:
package test;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegUtil {
/**
* 方式一:基本正则表达式实现
* @param str
* @param reg
* @return
*/
public static boolean matchMatcher(String str,String reg){
Pattern pattern =Pattern.compile(reg);
Matcher matcher=pattern.matcher(str);
return matcher.matches();
}
/**
* 方式二:利用Pattern自带实现
* @param str
* @param reg
* @return
*/
public static boolean matchPattern(String str,String reg){
return Pattern.matches(reg, str);
}
/**
* 方式三:String自带实现
* @param str
* @param reg
* @return
*/
public static boolean matchStr(String str,String reg){
return str.matches(reg);
}
}
对应单元测试代码如下:
package test;
import org.junit.Assert;
import org.junit.Test;
public class TestReg {
@Test
public void testParttern(){
Assert.assertTrue(RegUtil.matchMatcher("123", "//d+"));
Assert.assertTrue(RegUtil.matchPattern("123", "//d+"));
Assert.assertTrue(RegUtil.matchStr("123", "//d+"));
}
}