问题描述
比如一个文本"1ASDF NI1221312 HK1 2222/1 1QWW NI1232133 HK1 3333/1"两行文本,比如第1行表示旅客1的信息,第2行表示旅客2的信息,后面可能还有很多旅客信息,如何用正则表达式提取每个旅客的信息?最后结果类似于String1:1ASDF NI1221312 HK1 2222/1,String2:1QWW NI1232133 HK1 3333/1另外:一个旅客信息不一定是1行,头尾结束标记都是1,太不明显了,比较头疼
解决方案
String str="1ASDF NI1221312 HK1 2222/1"+ "1QWW1 NI1232133 HK1 3333" + "1QWW2 NI1232133 HK1 33331"+ "1QWW3 NI1232133 HK1 33331/1"+ "1QWW4 NI1232133 HK1 33331"+ "1QWW5 NI1232133 HK1 3333/1";Pattern p=Pattern.compile("(1)(?:.|n)*?/\1");Matcher m=p.matcher(str);while(m.find())System.out.println(m.group());
解决方案二:
String str="1ASDF NI1221312 HK1 2222/1"+ "1QWW1 NI1232133 HK1 3333" + "1QWW2 NI1232133 HK1 33331"+ "1QWW3 NI1232133 HK1 33331/1"+ "1QWW4 NI1232133 HK1 33331"+ "1QWW5 NI1232133 HK1 3333/1"; Pattern p=Pattern.compile("(1)(?:.|n)*?/\1"); Matcher m=p.matcher(str); while(m.find()) System.out.println(m.group());