正则表达式入门学习笔记
??在线测试: ?http://gskinner.com/RegExr/?
单字符转义:如 . ---?\.
块转义: ()----?\Q()\E
不区分大小写: wuzhong --?(?i)WUZHONG
?
?
十六进制字符: [a-fA-F0-9] OR [a-fA-F\d] OR (?!)[A-F\d]
非十六进制字符:[^A-Fa-f0-9]
?
匹配任意字符: . (不包括换行符)
(?s ). (包括换行符在内的任意字符)
?
一行的开始和结束:^alpha$
文本的开始和结束: \Aalpha\Z
?
\bcat\b my cat is brown acata
?
\bcat\b|dog \b(aaaa|bbbb|cccc)\b
\d\d(\d\d)-\1-\1 >>>> 2008-08-08 2009-09-10
?
?
\d{100}
?
\d{1,100}
?
\d{1,} === \d+
\d{0,} === \d*
\d{0,1}=== \d?
?
惰性量词: *?;+? ; ?? ; {1,100}?
<p>.*?</p>
<p>hello<em>world</em></p><p>welcome</p>
?
<p>.*</p>
<p>hello<em>world</em></p><p>welcome</p>
?
?
占有量词 : *+; ++ ; ?+ ; {1,100}+
?
[$”’\n\d/\\] >> [$\”’\n\\d/\\\\]
?
Patternregex = Pattern.compile(“[$\”’\n\\d/\\\\]”);
?
Patternregex = Pattern.compile(“[$\”’\n\\d/\\\\]”,
Pattern.COMMENTS|Pattern.CASE_INSENSITIVE);
?
?
MatcherregexMatcher = regex.matcher(subjectString)
regexMatcher.reset(anotherString)
?
?
/**
* 如果检验一个正则表达式是否是部分或整体匹配一个字符串,可以按如下方式
*
* 注:不要调用String.matches(), Patter.matches() , Matcher.matches(),它们都要求
* 匹配整个字符串,效率不高
*/
@Test
publicvoidtest(){
Patternpattern = Pattern.compile(regex,Pattern.CASE_INSENSITIVE);
Matchermatcher = pattern.matcher("abc1234567ABCDEFG");
System.out.println(matcher.find());
System.out.println(matcher.group());
System.out.println(matcher.start()+ ">>>"+ matcher.end());
//再次调用,查找下一个匹配
System.out.println(matcher.find());
System.out.println(matcher.group());
System.out.println(matcher.start()+ ">>>"+ matcher.end());
System.out.println(matcher.replaceFirst("HELLOWROLD"));
//设置匹配字符串的范围
matcher.reset("ab1cda");
matcher.region(1,100);
System.out.println(matcher.find());
//匹配不到,会抛异常
//System.out.println(matcher.group());
}
?
?
Stringlines[] = str.splite(“\r?\n”);
遍历每行进行匹配