正则表达式入门
str.matches("\d+"); 由1到多个数字组成返回true
正则表达式是什么?是一个字符串,一个由元字符【预定义字符】和普通字符和量词组成的一个字符串。
元字符:有特殊含义的字符
正则表达式的作用?用来实现字符串的匹配或过滤。
正则表达式的元字符如下:(再加取消元字符功能 如\d)
d 数字(digit)
D 非数字
s 空格(space) == [ fv]
S 非空格
w 单字符:字母数字下划线中的某个符号(word)
W 非单字符:单字符之外中的某个符号
. 一个任意字符[除 ]
^regex$ ^表示开始 $表示结束
[^a] ^在括号里表示 否 ...
| 或者
量词如下:
+ 1个或多个字符
* 0个或多个字符
? 0或1个字符
{n} 正好n个字符
{n,} 至少n个字符
{n,m} 最少n个,最多m个字符
字符集:
使用[]将出现的字符罗列出来
[ac?_6] 表示5个字符中的某一个
[0-9] 表示0-9中的某一个,- 表示范围
所以 w 等价于 [a-zA-Z0-9_]
正则的应用:
String类的与正则相关的常用方法
boolean matches(regex); 匹配:按正则的要求对字符串进行匹配
String[] split(regex); 分割:按正则的要求对字符串进行分割
分割示例:
String str="i love! you?";
String regex="[\s!?\d]{1,}"; //一或多个空格及叹号、问号、数字
String[] s=str.split(regex);
for(String tem:s){
println(tem);
}
println("个数"+s.length);
//
import java.util.regex.Pattern;
if( Pattern.matches(regex1, email) || Pattern.matches(regex2, email) ){...
//
积累:
非负整数 [0-9]+
正整数 [1-9]\d* OR [1-9][0-9]*
字母开头之后接3-6个任意字符 [a-zA-Z].{3,6} 等效 [a-zA-Z]{1}.{3,6}
替换
String newstr = str.replaceALL(String regex,String replament); 用replament 替换 regex
积累:
或者,要么是nba 要么是cba : nba|cba
手机号:[1][3578][0-9]{9}
邮箱:.+@.+[.].+ 是错的 [a-zA-Z0-9]\w*[@][a-zA-Z0-9]+[.][a-zA-Z]{2,3}
示例:
java.util.Pattern
Pattern.matches(regex,email); 等效于 email.matches(regex);
过滤
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Demo {
public static void main(String[] args) {
String str = "public 中国 stati美国c void main(String[] args) {";
String regex = "[sS][a-zA-Z]{5,}";// [u4e00-u9fa5] 表示汉字
// 匹配模式
Pattern pattern = Pattern.compile(regex);
// 匹配器
Matcher matcher = pattern.matcher(str);
// 匹配
while (matcher.find()) {
System.out.println(matcher.group());
}
}
}
预留位置