由于上星期笔记本落在学校,导致这么多天没记笔记,现在才补上,人也变懒了。。。要坚持啊
Matcher(匹配器) RegDemo
通过调用模式的matcher 方法从模式创建匹配器。创建匹配器后,可以使用它执行三种不同的匹配操作:
• matches 方法尝试将整个输入序列与该模式匹配。
• lookingAt 尝试将输入序列从头开始与该模式匹配。
• find 方法扫描输入序列以查找与该模式匹配的下一个子序列。
常用的通配符
. 代表一个元字符
• a.b 匹配“avb” ,“a b” ,但不匹配a00b
^ 在字符串里代表开始,在[]里代表取反。
• ^j.*va 匹配”j123skdva”, a[^0-9]b匹配”arb”,不能匹配”a1b”
$ 行的结尾
• a.c0$ 匹配”abc0”
| 或者
• a+|b+ 匹配“aa”, “a”, “bbb”, “b”
[]
• 正则表达式r[aou]t匹配rat、rot和rut,但是不匹配ret
-
• [A-Za-z]可以匹配任何大小写字母
* 代表允许字符出现多次
• a.*b 匹配”abbb”, “a67b” atpb
+ 最少出现一次
• a+ 匹配“aa”, “a”
? 重复零次或一次
• a.*b:?0$ 匹配“aab:0” “aab0”
{} 027-9999999
[0-9]{3}-[0-9]{7}
• 正则表达式A[0-9]{3} 能够匹配字符"A"后面跟着正好3个数字字符的串,例如A123、A348等
• 正则表达式[0-9]{4,6} 匹配连续的任意4个、5个或者6个数字字符
• 正则表达式[0-9]{4,}匹配连续的任意4个或以上数字字符
边界匹配器
^ 行的开头
$ 行的结尾
\b 单词边界
\B 非单词边界
\A 输入的开头
\G 上一个匹配的结尾
\Z 输入的结尾,仅用于最后的结束符(如果有的话)
\z 输入的结尾
预定义字符类
\d 数字:[0-9]
\D 非数字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 单词字符:[a-zA-Z_0-9]
\W 非单词字符:[^\w]
匹配模式,忽略大小写
Pattern.CASE_INSENSITIVE
/**
* 用正则去分割字符串
*/
publicvoid mySplit()
{
String phones1 =
"Justin 的手机号码:0939-100391\n" +
"momor 的手机号码:0939-666888\n";
//根据指定的字符拆分字符串
// String[] phone = phones1.split("\n");
// for(int i=0; i<phone.length; i++)
// {
// System.out.println("电话是:" + phone[i]);
// }
//圆括号用来分组,取数据的时候可以根据分组格式来进行数据提取
String regStr = "(.*):(0939-[\\d]{6})";
Patternpattern = null;
Matcher match = null;
try
{
pattern = Pattern.compile(regStr);
match = pattern.matcher(phones1);
while(match.find())
{
System.out.println("提取内容:" + match.group(1));
}
}
提取内容:Justin 的手机号码
提取内容:momor 的手机号码