Java正则表达式-匹配器
1 Macher类
Matcher类的作用是,通过解释Pattern对象中定义的已编译模式对字符序列执行匹配。
Pattern类的matcher()方法可以创建该类的Matcher实例。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
//www.yiidian.com 一点教程网
public class Main {
public static void main(String[] args) {
String regex = "[a-z]@.";
Pattern p = Pattern.compile(regex);
String str = "abc@yahoo.com,123@cnn.com,abc@google.com";
Matcher m = p.matcher(str);
}
}
下面是Macher类的方法:
- find() 方法
- start() 方法
- end() 方法
- group() 方法
2 find()方法
find()方法:在输入中找到Pattern的匹配项。
如果查找成功,则返回true。否则,它返回false。
第一次调用find()在输入的开头开始搜索。下一个匹配将在上一次匹配之后开始搜索。
我们可以使用带有find()方法的while循环来查找所有匹配项。
find()方法存在重载方法。find()的重载方法使用整数作为参数,它是开始查找匹配项的偏移量。
3 start()方法
start() 方法返回上一个匹配项的起始索引。成功调用find() 方法后使用它。
4 end()方法
end()方法的作用:用于返回匹配字符串中最后一个字符的索引。
匹配后,str.substring(m.start(), m.end())为您提供匹配的字符串。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
//www.yiidian.com 一点教程网
public class Main {
public static void main(String[] args) {
String regex = "[a-z]@.";
Pattern p = Pattern.compile(regex);
String str = "abc@yahoo.com,123@cnn.com,abc@google.com";
Matcher m = p.matcher(str);
if (m.find()) {
String foundStr = str.substring(m.start(), m.end());
System.out.println("Found string is:" + foundStr);
}
}
}
以上代码输出结果为:
Found string is:c@y
5 group()方法
group()方法的作用:通过上一次成功的find() 方法调用返回找到的字符串。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
//www.yiidian.com 一点教程网
public class Main {
public static void main(String[] args) {
String regex = "[a-z]@.";
Pattern p = Pattern.compile(regex);
String str = "abc@yahoo.com,123@cnn.com,abc@google.com";
Matcher m = p.matcher(str);
if (m.find()) {
String foundStr = m.group();
System.out.println("Found text is:" + foundStr);
}
}
}
以上代码执行结果为:
Found text is:c@y
另一个示例
import java.util.regex.Pattern;
import java.util.regex.Matcher;
//www.yiidian.com 一点教程网
public class Main {
public static void main(String[] args) {
String regex = "[abc]@.";
String source = "abc@example.com";
findPattern(regex, source);
}
public static void findPattern(String regex, String source) {
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(source);
System.out.println("Regex:" + regex);
System.out.println("Text:" + source);
while (m.find()) {
System.out.println("Matched Text:" + m.group() + ", Start:" + m.start()
+ ", " + "End:" + m.end());
}
}
}
以上代码执行结果为:
Regex:[abc]@.
Text:abc@example.com
Matched Text:c@e,Start:2,End:5
热门文章
优秀文章