正则表达式
正则表达式:
正则表达式:是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串,其实就是一种规则。有自己特殊的应用。(符合一定规则的字符串)
字符:
x 字符 x。
\\ 反斜杠字符
\n 换行符 ('\u00A')
\r 回车父 ('\u000D')
字符类:
[abc] a、b 或 c(简单类)
[^abc] 任何字符,除了a、b 或 c (否定)
[a-zA-Z] a到z 或 A 到 Z。
[0-9] 0 到 9 的字符都包括
预定义字符类:
. 任何字符: . 字符本身用 \. 表示(转义)
\d 数字:[0-9]
\w 单词字符:[a-zA-Z_0-9] 在正则表达式中组成单词的东西必须有这些东西组成
边界匹配器
^ 行的开头
$ 行的结尾
\b 单词边界 (就是不是单词的地方)
X? X,一次或零次
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好n 次
X{n, } X,至少n 次
X{n,m} X,至少n 次,但是不超过m 次
正则表达式应用:
判断功能:
public boolean matches(String regex)
分割功能:
public String[] split(String regex)
替换功能:
public String replaceAll(String regex,String replacement)
获取功能:
Pattern和Matcher类的使用
import java.util.Scanner;
/*
*校验邮箱
*
*1517806588@qq.com
*liuyi@163.com
*linqingxia@126.com
*fenggingyan@sina.com.cn
*fqy@itcast.cn
*
*/
public class RegexDemo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入邮箱:");
String s = sc.nextLine();
String regex = "\\w+@\\w{2,6}+(\\.\\w{2,3})+";
System.out.println("是否为邮箱:"+s.matches(regex));
}
}
/*
*分割功能
*
*/
public class RegexDemo2 {
public static void main(String[] args) {
String s = "aa,bb,cc";
String [] arrge = s.split(",");
for(int i=0; i<arrge.length;i++) {
System.out.println(arrge[i]);
}
System.out.println("------------------");
s = "xx.yy.zz";
String [] arrge2 = s.split("\\.");
for(int i=0; i<arrge2.length;i++) {
System.out.println(arrge2[i]);
}
System.out.println("------------------");
s = "aa bb cc";
String [] arrge3 = s.split(" +");
for(int i=0; i<arrge3.length;i++) {
System.out.println(arrge3[i]);
}
System.out.println("------------------");
s = "aa bb cc";
String [] arrge4 = s.split(" +");
for(int i=0; i<arrge4.length;i++) {
System.out.println(arrge4[i]);
}
System.out.println("------------------");
s= "F:\\develop\\eclipse-workspace\\study";
String [] arrge5 = s.split("\\\\");
for(int i=0; i<arrge5.length;i++) {
System.out.println(arrge5[i]);
}
}
}
-----------------------------------------------------------------------------
结果:
aa
bb
cc
------------------
xx
yy
zz
------------------
aa
bb
cc
------------------
aa
bb
cc
------------------
F:
develop
eclipse-workspace
study
------------------
/*
* 替换功能
* */
public class RegexDemo3 {
public static void main(String[] args) {
String s = "helloqq1234567worldkh6221112345678java";
String regex = "\\d";
String ss = "*";
String result = s.replaceAll(regex, ss);
System.out.println(result);
}
}
结果:
helloqq*******worldkh*************java
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/*
* 获取功能:
* Pattern和Matcher的使用
* */
public class RegexDemo4 {
public static void main(String[] args) {
//模式和匹配器的典型调用功能
//把正则表达式编译成模式对象
Pattern p = Pattern.compile("a*b");
//通过模式对象得到匹配器对象,需要的是被匹配的字符串
Matcher m = p.matcher("aaaaab");
//调用匹配器对象的功能
boolean b = m.matches();
System.out.println(b);
//判断功能,可以直接用字符串的方法做
String s = "aaaab";
String regex = "a*b";
boolean bb = s.matches(regex);
System.out.println(bb);
}
}
--------------------------------------------------------------------------------
结果:
true
true
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexDemo5 {
public static void main(String[] args) {
//字符串
String s = "da jia ting wo shuo,jin tian yao xia yu le,bu shang wan zi xi";
//规则
String regex = "\\b\\w{3}\\b";
//把规则编译成模式对象
Pattern p = Pattern.compile(regex);
//通过模式对象得到匹配器对象
Matcher m = p.matcher(s);
//调用匹配器对象的功能
while(m.find()) {
System.out.println(m.group());
}
}
}
--------------------------------------------------------------------
结果:
jia
jin
yao
xia
wan