正则表达式的匹配规则
A:字符
x 字符x 举例:'a'表示字符a
\\ 反斜线字符
\n 换行符('\u000A')
\r 回车符('\u000D')
B:字符类
[abc] a、b或c(简单类)
[^abc] 任何字符,除了a、b或c(否定)
[a-zA-Z] a-z或A-Z 两头的字母包括在内(指定范围)
[0-9] 0到9的字符都包括
C:预定义字符类
. 任何字符。我的就是.字符本身,怎么表示呢?--"\."
\d 任意数字字符:[0-9]
\w 单词字符:[a-zA-Z_0-9] 包含字母(大小写)、下划线"_"、数字
D:边界匹配器
^ 行的开头
$ 行的结尾
\b 单词边界
就是不是单词字符的地方
举例:hello world?haha;xixi
其中:空格" "、问号"?"、分号";" 都属于单词边界
E:数量词
X? X,0-1次
X* X,0-多次
X+ X,1-多次
X{n} X,恰好n次
X{n,} X,至少n次
X{n,m} X,至少n次,但是不超过m次
常见功能:
A:判断功能
String类的 public boolean matches(String regex)
B:分割功能:
String类的 public String[] split(String regex)
C:替换功能:
String类的 public String replaceAll(String regex,String replacement)
D:获取功能:
Pattern 和 Matcher类
Pattern p = Pattern.compile(“a*b”);
Matcher m = p.matcher(“aaaaab”);
find():查找是否存在
group:获取刚才查找过的数据
匹配获取功能–Pattern和Matcher类的应用
练习:
获取下面这个字符串中由3个字符组成的单词,并打印
package cn.regex;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexDemo2 {
/**
* 匹配获取功能
* 获取下面这个字符串中由3个字符组成的单词
* da jia ting wo shuo,jin tian yao xia yu,bu shang wan zi xi,gao xing bu?
* @param args
*/
public static void main(String[] args) {
//定义字符串
String s = "da jia ting wo shuo,jin tian yao xia yu,bu shang wan zi xi,gao xing bu?";
//定义匹配规则:由3个字符组成的单词
String regex = "\\b\\w{3}\\b";//单个'\'需要加斜杠转义后才能表示为‘\’
//把规则编译成模式对象
Pattern p = Pattern.compile(regex);
//通过模式对象得到匹配器对象
Matcher m = p.matcher(s);
//查找下一个匹配的字符串,进入循环则表示查找到
while(m.find()){
System.out.println(m.group());//获取并打印该匹配的字符串
}
}
}