正则表达式:Matcher类 Pattern 类
Matcher类: 下面我们看看一个小例子,来说明这个问题 这个正则表达式有三个组: 我们看看和正则表达式匹配的一个字符串x99SuperJava, 下面我们写一个程序来验证一下: import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexTest {
public static void main(String[] args) {
String regex = "w(dd)(w+)";
String candidate = "x99SuperJava";
Pattern p = Pattern.compile(regex);
Matcher matcher = p.matcher(candidate);
if(matcher.find()){
int gc = matcher.groupCount();
for(int i = 0; i <= gc; i++)
System.out.println("group " + i + " :" + matcher.group(i));
}
} } 输出结果: group 099SuperJava
1 :99
2 :SuperJava 下面我们看看Matcher类提供的方法: import java.util.regex.*;
public MatcherPatternExample{
public static void main(String args[]){
test();
}
test(){
Pattern p = Pattern.compile("d");
Matcher m1 = p.matcher("55");
Matcher m2 = p.matcher("fdshfdgdfh");
System.out.println(m1.pattern() == m2.pattern());
//return true
} public Matcher reset() public Matcher reset(CharSequence input) public int start() 下面我们看看一个小例子 : MatcherStartExample{
(){
//create a Matcher and use the Matcher.start() method
String candidateString = "My name is Bond. James Bond.";
String matchHelper[] =
{" ^"," ^"};
Pattern p = Pattern.compile("Bond");
Matcher matcher = p.matcher(candidateString);
//Find the starting point of the first 'Bond'
matcher.find();
int startIndex = matcher.start();
System.out.println(candidateString);
System.out.println(matchHelper[0] + startIndex);
//Find the starting point of the second 'Bond'
matcher.find();
int nextIndex = matcher.start();
System.1] + nextIndex);
} 输出结果: My name is Bond. James Bond. public int start(int group) public int end() public int end(int group) public String group() import java.util.regex.*; MatcherGroupExample{ (String args[]){ test(); } (){ //create a Pattern Pattern p = Pattern.compile("Bond"); //create a Matcher and use the Matcher.group() method String candidateString = "My name is Bond. James Bond."; Matcher matcher = p.matcher(candidateString); //extract the group matcher.find(); System.out.println(matcher.group()); } public String group(int group) import java.util.regex.*; class MatcherGroupParamExample{ static void main(String args[]){ test(); } void test(){ //create a Pattern Pattern p = Pattern.compile("B(ond)"); //create a Matcher and use the Matcher.group(int) method String candidateString = "My name is Bond. James Bond."; //create a helpful index for the sake of output Matcher matcher = p.matcher(candidateString); //Find group number 0 of the first find matcher.find(); String group_0 = matcher.group(0); String group_1 = matcher.1); System.out.println("Group 0 " + group_0); System.out."Group 1 " + group_1); System.out.println(candidateString); //Find group number 1 of the second find matcher.find(); group_0 = matcher.0); group_1 = matcher.println(candidateString); } } public int groupCount() 这个方法返回了,正则表达式的匹配的组数。 public boolean matches() 尝试将整个区域与模式匹配。这个要求整个输入字符串都要和正则表达式匹配。 和find不同, find是会在整个输入字符串查找匹配的子字符串。 public boolean find() find会在整个输入中寻找是否有匹配的子字符串,一般我们使用find的流程: //在匹配的区域,使用group,replace等进行查看和替换操作 } public boolean lookingAt() public Matcher appendReplacement (StringBuffer sb,String replacement) public StringBuffer appendTail(StringBuffer sb) public String replaceAll(String replacement) 转载地址:http://my.oschina.net/KingSirLee/blog/381726 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |