概念
正则表达式
在阅读本文前,你应该已经了解了正则表达式的基本概念以及如何书写正则表达式。如果对正则表达式不是太了解,或者想更深入地了解正则表示式,请点击这里。
捕获组
捕获组能够让我们方便地从正则表达式中提取出我们需要的内容。捕获组根据字符出现的顺序,从左往右开始进行编号。例如正则表达式((A)(B(C)))
, 其捕获组分别为:
- ((A)(B(C)))
- (A)
- (B(C))
- (C)
一个捕获组通常是用括号包起来的部分,其中整个正则表示式是第一个捕获组,可以选择用括号包起来,也可以不用括号。除第一个捕获组之外,其他捕获组都需用括号包起来。
详解Java正则表示式的使用
包简介
java.util.regex包中有一个interface,两个class和一个exception,分别是
- MatchResult
- Pattern
- Matcher
- PatternSyntaxException
其中,MatchResult是interface, Matcher实现了这个interface。Pattern和Matcher是class,Pattern是一个正则表达式经编译后的表现模式,Matcher是一个状态机器。
Pattern
compile(String regex) / compile(String regex, int flags)
静态方法,把一个正则表示式编译后,生成一个Pattern对象实例
Pattern p = Pattern.compile("\\d{2}");
p.pattern(); //返回 \d{2}
matcher(CharSequence input)
生成一个Matcher对象。Matcher类时不能直接实例化的,可以通过此方法实例化一个Matcher对象,从而进行各种操作。
split(CharSequence input) / split(CharSequence input, int limit)
使用正则表示式,进行字符串分割
Matcher
find() / find(int start) / lookingAt()/matches()
进行匹配操作,如果匹配成功,这三个方法都会返回true.其中,find()是在源字符串中找出和正则表达式匹配的字符串。find(int start)是从start位置开始寻找下一个匹配的字符串。lookingAt()是从源字符串的第一个字符进行匹配。matches()是对整个源字符串中进行匹配,如果都匹配才返回true。
String str="abcd23"
Pattern.matches("\\w{4}\d{2}",str); //快捷方式
Pattern p = Pattern.compile("\\w{4}\d{2}");
Matcher m = p.matcher(str); //和上面的方法等价
m.matches();
group() / start() / end()
当使用find() / find(int start) / lookingAt() / matches()进行匹配操作并返回true之后,才可以执行者三个方法获取更加详细的信息。
group():返回匹配到的字符串
start():返回匹配到的字符串在源字符串中的位置
end(): 返回匹配到的字符串的最后一个字符在源字符串中的位置
另外这几个方法分别有一个重载方法 group(int i) / start(i) / end(i), 分别用于对第i个捕获组进行对应的操作
replaceAll(String replacement) / replaceFirst(String replacement)
替换源字符串中和正则表达式匹配的子字符串。其中replaceAll是替换所有的,replaceFirst是替换第一个匹配的。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。