刷题过程中遇到的这类问题--字符串匹配问题,解决起来简单多了。总结的不多,以后补充吧。知识面太窄了。
题目:读入数据string[ ],然后读入一个短字符串。要求查找string[ ]中和短字符串的所有匹配,输出行号、匹配字符串。匹配时不区分大小写,并且可以有一个用中括号表示的模式匹配。如“aa[123]bb”,就是说aa1bb、aa2bb、aa3bb都算匹配。
例如:输入 4
Aab
a2B
ab
ABB
a[a2b]b
输出:
1 Aab
2 a2B
4 ABB
代码:
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
Scanner sc= new Scanner(System.in);
while(sc.hasNext()){
int n = sc.nextInt();//获取输入字符串的个数
String arr[] = new String[n];//创建数组
for(int i =0;i<n;i++) arr[i] = sc.next();//将输入的字符串写如数组arr中
Pattern p = Pattern.compile(sc.next(),Pattern.CASE_INSENSITIVE);//正则表达式,第一个参数设置匹配的格式,第二个参数为不区分大小写。返回给一个Pattern对象P;
for(int i=0;i<n;i++){
Matcher m = p.match(arr[i]);//将数组中的内容与正则表达式进行匹配
while(m.matchers()){
System.out.println((i+1)+" "+arr[i]);//将满足条件的行 以及字符串输出
}
}
正则表达式内容补充:http://www.cnblogs.com/playing/archive/2011/03/15/1984943.html
我也是看了他的详细讲解才懂了~写的很详细
网友评论