从response 中得到 Family Name 的信息,原文如下:
Retrieve Family Name from response
Search for the keyword “FAMILY NAME”, followed by spaces.
Extract the string that follows until the occurrence of the character “.”. In this example, the Family name is “WONG”example:
SETA Approval 2010-05-30
FAMILY NAME WONG...........................USA COUNTRY
GIVEN NAME PERTER..................
PASSPORT CN11111........... CHN EXPIRY DATE 08JUN2015sample里面包含了换行信息。
请问大家能否用正则表达式来取得 FAMILY NAME 的信息?
Retrieve Family Name from response
Search for the keyword “FAMILY NAME”, followed by spaces.
Extract the string that follows until the occurrence of the character “.”. In this example, the Family name is “WONG”example:
SETA Approval 2010-05-30
FAMILY NAME WONG...........................USA COUNTRY
GIVEN NAME PERTER..................
PASSPORT CN11111........... CHN EXPIRY DATE 08JUN2015sample里面包含了换行信息。
请问大家能否用正则表达式来取得 FAMILY NAME 的信息?
+ "SETA Approval 2010-05-30"
+ "FAMILY NAME WONG...........................USA COUNTRY"
+ "GIVEN NAME PERTER.................."
+ "PASSPORT CN11111........... CHN EXPIRY DATE 08JUN2015";
String pattern = "(?i)FAMILY\\s+NAME\\s+([^.]+)";
Matcher m = Pattern.compile(pattern).matcher(test);
while(m.find())
{
System.out.println(m.group(1));
}
+ "SETA Approval 2010-05-30\n"
+ "FAMILY NAME WONG...........................USA COUNTRY\n"
+ "GIVEN NAME PERTER..................\n"
+ "PASSPORT CN11111........... CHN EXPIRY DATE 08JUN2015\n";
//System.out.print(test);
Pattern p = Pattern.compile(".*FAMILY NAME (.*)");
Matcher m = p.matcher(test);
while(m.find()){
System.out.println(m.group(1));
}
SETA Approval 2010-05-30
FAMILY NAME WONG...........................USA COUNTRY
GIVEN NAME PERTER..................
PASSPORT CN11111........... CHN EXPIRY DATE 08JUN2015
try{
BufferedReader buff = new BufferedReader(
new FileReader("TestRegex.txt"));
String s = null;
String result = null;
while((s = buff.readLine()) != null){
if(Pattern.matches("FAMILY NAME .*",s)){
result = s.replaceAll("FAMILY NAME (.*)","$1");
}
}
System.out.println(result);
}catch(Exception e){
e.printStackTrace();
}
String test = "xample:\n"
+ "SETA Approval 2010-05-30\n"
+ "FAMILY NAME WONG...........................USA COUNTRY\n"
+ "GIVEN NAME PERTER..................\n"
+ "PASSPORT CN11111........... CHN EXPIRY DATE 08JUN2015\n";
//System.out.print(test);
Pattern p = Pattern.compile(".*FAMILY NAME (.*)");
Matcher m = p.matcher(test);
while(m.find()){
System.out.println(m.group(1));
}
的到的结果是 WONG...........................USA COUNTRY
而不是 WONG
Matcher m = p.matcher(test);
while(m.find()){
System.out.println(m.group(1));
}
得到的结果是 WONG...........................USA COUNTRY
而不是 WONG
if(Pattern.matches("FAMILY NAME .*",s)){
result = s.replaceAll("FAMILY NAME (\\w+).+","$1");
}只要改一句就行啦,\\w表示的意思是字母。
就算你句子是:FAMILY NAME WONG ABC...................USA COUNTRYWONG后面是 空格或是........都可以得到WONG