正则表达式 元字符 ^ $ . |
一、行的开始和结束
^ 脱字符:代表行的开始
$ 美元符:代表行的结束
正则表达式[u]这种写法是一行文本中包含u都能匹配出来。但是如果添加了[^u]那么只能匹配出首字母是u的。同样如果是在末尾添加 [u$] 那么只会匹配出结尾是u的
示例代码运行
1. 未添加 ^ 脱字符和 $ 美元符
String[] str = {"Qaz", "qxz", "quZu", "ezu", "uzi"};
Pattern pattern = Pattern.compile("u");
for (int i = 0; i < str.length; i++) {
Matcher matcher = pattern.matcher(str[i]);
if (matcher.find()) {
System.out.println("匹配结果:" + str[i]);
}
}
运行结果如下
2.添加 ^ 脱字符
String[] str = {"Qaz", "qxz", "quZu", "ezu", "uzi"};
Pattern pattern = Pattern.compile("^u");
for (int i = 0; i < str.length; i++) {
Matcher matcher = pattern.matcher(str[i]);
if (matcher.find()) {
System.out.println("匹配结果:" + str[i]);
}
}
运行结果如下
3.添加$ 美元符
String[] str = {"Qaz", "qxz", "quZu", "ezu", "uzi"};
Pattern pattern = Pattern.compile("u$");
for (int i = 0; i < str.length; i++) {
Matcher matcher = pattern.matcher(str[i]);
if (matcher.find()) {
System.out.println("匹配结果:" + str[i]);
}
}
运行结果如下
二、排除型字符组
字符组中的^开头表示排除,当前文本不希望匹配到指定字符
String[] str = {"Qaz", "qxz", "quZu", "ezu", "uzi"};
Pattern pattern = Pattern.compile("q[^u]");
for (int i = 0; i < str.length; i++) {
Matcher matcher = pattern.matcher(str[i]);
if (matcher.find()) {
System.out.println("匹配结果:" + str[i]);
}
}
三、点好匹配任意符
[.]元字符 是用来匹配任意字符的字符组的简便写法。在表达式中使用一个匹配任何字符的占位符
String[] str = {"Qaz", "qxzZ", "quZu", "ezu", "uzi"};
Pattern pattern = Pattern.compile("q...$");
for (int i = 0; i < str.length; i++) {
Matcher matcher = pattern.matcher(str[i]);
if (matcher.find()) {
System.out.println("匹配结果:" + str[i]);
}
}
四、多选结构
| 元字符代表的意思是或(or),可用于不同的子表达式组合成总的表达式
String[] str = {"Qaz", "qxzZ", "quZu", "ezu", "uzi"};
Pattern pattern = Pattern.compile("qx|qu");
for (int i = 0; i < str.length; i++) {
Matcher matcher = pattern.matcher(str[i]);
if (matcher.find()) {
System.out.println("匹配结果:" + str[i]);
}
}