java正则表达式
基础知识
预定义的字符类
预定义字符类 | 说明 |
---|
. | 任何字符(可能匹配或不匹配行结束符) |
\d | 一个数字:[0-9] |
\D | 非数字[^0-9] |
\s | 空格字符 [ \t\n\x0B\f\r] |
\S | 非空白字符[\^\s] |
\w | 一个字的字符[a-zA-Z_0-9] |
\W | 非单词字符[^\w] |
特殊意义的字符
特殊字符 | 说明 |
---|
^ | 匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。要匹配 ^ 字符本身,请使用 \^ |
? | 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 \?。 |
+ | 匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 +。 |
* | 匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 *。 |
() | 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 \( 和 \) |
$ | 匹配输入字符串的结尾位置。要匹配 $ 字符本身,请使用 \$。 |
实例
获取”ArrayListTest”中的”ArrayList”
private void getStr4(){
String str="ArrayListTest";
System.out.println("从\""+str+"\""+"中提取Test前面的内容");
String regex = "(\\S*)(Test$)";
Pattern mPattern = Pattern.compile(regex);
Matcher mMatcher = mPattern.matcher(str);
while (mMatcher.find()) {
System.out.println(mMatcher.group(1));
System.out.println(mMatcher.group(2));
}
}
private void getStr3(){
String str="ArrayListTest";
System.out.println("从\""+str+"\""+"中提取Test前面的内容");
String regex = "(\\S*)Test$";
Pattern mPattern = Pattern.compile(regex);
Matcher mMatcher = mPattern.matcher(str);
while (mMatcher.find()) {
System.out.println(mMatcher.group(1));
}
}
判断字符串是否是double或float类型
public static boolean isDoubleOrFloat(String str) {
//^[-\\+]? 以-或+开头,且-或+出现1次或0次
// [.\\d]* .和数字 出现零次或多次,且以.或数字结尾
Pattern pattern = Pattern.compile("^[-\\+]?[.\\d]*$")
return pattern.matcher(str).matches()
}
//System.out.println("00.8="+isDoubleOrFloat("00.8"))
//System.out.println("-010.8="+isDoubleOrFloat("-010.8"))
//System.out.println(".8="+isDoubleOrFloat(".8"))