初学正则表达式
我们来先认识下正则表达式的对象:
Pattern类
Pattern p = Pattern.compile("a*b");//通过规则产生正则对象
Matcher m = p.matcher("aaaaab");// 和字符串相关联产生引擎
boolean b = m.matches();//利用引擎匹配打个比方:我们按照一定的规则组装成一台汽车对象,打开发动机盖子,我们倒入原油,然后发动引擎,这样车子就动了。
正则表达式的常用的方法:
matches():匹配整个字符串 返回boolean类型数据
1 import java.util.regex.*; 2 class RegexTest 3 { 4 public static void main(String[] args) 5 { 6 String reg="a*b"; 7 String str="b"; 8 String str1="a"; 9 String str2="aaaab"; 10 System.out.println(str.matches("a*b")); 11 System.out.println(str1.matches("a*b")); 12 System.out.println(str2.matches("a*b")); 13 } 14 }
split():切割,返回字符串数组(把不符合规则的取出,为了区分group()方法)
public static void method_1()
{
String str="www.abc.com.cn";
String reg="\\.";
String[] arr=str.split(reg);
for(String s:arr)
{
System.out.println(s);
}
replaceAll()方法:
public static void method_4()
{
String str="abckkedgghungtr";
String reg="(.)\\1+";
String newReg="$1";
str=str.replaceAll(reg,newReg);
System.out.println(str);
}
group()方法
public static void method_5()
{
String str="wo jiu yao hui lai le ameng";
String reg="(\\b.{2}\\b)";
Pattern p=Pattern.compile(reg);
Matcher m=p.matcher(str);
while(m.find())
{
System.out.println(m.group());
}
}
group()方法都是符合规则的取出
正则表达式的基本符号
| 字符类 | |
|---|---|
| [abc] | a、b 或 c(简单类) |
| [^abc] | 任何字符,除了 a、b 或 c(否定) |
| [a-zA-Z] | a 到 z 或 A 到 Z,两头的字母包括在内(范围) |
| [a-d[m-p]] | a 到 d 或 m 到 p:[a-dm-p](并集) |
| [a-z&&[def]] | d、e 或 f(交集) |
| [a-z&&[^bc]] | a 到 z,除了 b 和 c:[ad-z](减去) |
| [a-z&&[^m-p]] | a 到 z,而非 m 到 p:[a-lq-z](减去) |
| 预定义字符类 | |
|---|---|
| . | 任何字符(与行结束符可能匹配也可能不匹配) |
| \d | 数字:[0-9] |
| \D | 非数字: [^0-9] |
| \s | 空白字符:[ \t\n\x0B\f\r] |
| \S | 非空白字符:[^\s] |
| \w | 单词字符:[a-zA-Z_0-9] |
| \W | 非单词字符:[^\w] |
| 边界匹配器 | |
|---|---|
| ^ | 行的开头 |
| $ | 行的结尾 |
| \b | 单词边界 |
| \B | 非单词边界 |
| \A | 输入的开头 |
| \G | 上一个匹配的结尾 |
| \Z | 输入的结尾,仅用于最后的结束符(如果有的话) |
| \z | 输入的结尾 |
| Greedy 数量词 | |
|---|---|
| X? | X,一次或一次也没有 |
| X* | X,零次或多次 |
| X+ | X,一次或多次 |
| X{n} | X,恰好 n 次 |
| X{n,} | X,至少 n 次 |
| X{n,m} | X,至少 n 次,但是不超过 m 次 |
浙公网安备 33010602011771号