正则表达式
概述:正则表达式事是对字符串操作的以重逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”来表达对字符串的一种过滤逻辑。
规则字符:
String regx = "";
regx = "a"; // 代表此字符
regx = "\\"; // 代表反斜线字符
regx = "\n"; // 换行符
regx = "\r"; // 回车符
regx = "[a,b,c]"; // a,b或c
regx = "[^a,b,c]"; // 任何字符。除了a,b,c
regx = "[a-zA-Z]"; // a到 z 或 A到 Z,两头的字母包括在内
regx = "[0-9]"; // 0到9的字符都包括
regx = "."; // 任何字符
regx = "\."; // . 字符本身
regx = "\d"; // 数字:[0-9] \D 非数字: [^0 - 9]
regx = "\w"; // 单词字符:[a-zA-Z_0-9],在正则表达式里面组成单词的东西必须有这些东西组成 \W 非单词字符:[^\w]
regx = "\s"; // 匹配空格字符
regx = "|"; // | 或者
regx = "abc$"; // 以abc结尾
regx = "^abc"; // 以abc开头
regx = "[0-9]+"; //0-9 + 可以出现一个或多个
regx = "[a-z]*"; //0-9 * 0个或多个 1个也算多个 空串算0个
regx = "[A-Z]?"; // ? 一个或 0个
regx = "\\w+";
regx = "[a-zA-Z0-9_]+";
regx = "[a-z]{6}"; //正好几个
regx = "[a-zA-Z]{6,}"; //至少6个
regx = "[a-zA-Z]{6,16}"; //大于等于6 小于等于16
正则表达式功能:
判断功能:
public boolean matches(String regex) // 判断字符串是否符合正则表达式
分割功能:
public String[] split(String regex) // 将字符串按正则表达式分割成几段字符串,返回String类的数组
替换功能:
public String replaceAll(String regex,String replacement) // 用输入的字符串替换符合正则表达式的字符串
Pattern和Matcher的概述:
指定为字符串的正则表达式必须首先被编译为此类的实例。然后,可将得到的模式用于创建 Matcher
对象,依照正则表达式,该对象可以与任意字符序列
匹配。执行匹配所涉及的所有状态都驻留在匹配器中,所以多个匹配器可以共享同一模式。
典型调用顺序:
Pattern p = Pattern.compile("a*b");
Matcher m = p.matcher("aab");
boolean b = m.matches();
获取功能:
使用的是 find()方法 和 group()方法 注意一定要先使用find()方法先找到 才能用group()方法获取出来。例:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class MyTest4 {
public static void main(String[] args) {
/* 获取下面这个字符串中由三个字符组成的单词 正则表达式 \\b[a-z]{3}\\b
da jia ting wo shuo,jin tian yao xia yu,bu shang wan zi xi,gao xing bu?*/
String str = "da jia ting wo shuo,jin tian yao xia yu,bu shang wan zi xi,gao xing bu?";
Pattern pattern = Pattern.compile("\\b[a-z]{3}\\b");
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
String s = matcher.group();
System.out.println(s);
}
}
}