我需要从PDF文件中获取数据并将其用作测试数据,以使用Selenium Webdriver测试应用程序。
我将pdf数据存储在一个变量中并逐个获取所需的数据。
现在我面临的问题是,在该文件中,下面的数据可以多次,只有粗体数据会发生变化。我需要获取那些大胆的值。
航空公司记录定位器 JUI1244
航空公司 XXX航空公司
航班 HU124
原产地 CCC CST机场
目的地 XXX YYY,国际
离开 07:35 PM
抵达 2015年10月24日上午09:20
出发终端C
抵达 1号航站楼
我尝试使用Substring来获取值,但它总是给我第一个实例值。所以,我尝试使用正则表达式,并能够使用以下正则表达式获得“航空公司记录定位器”行值
Matcher m1 = Pattern.compile("(?m)(?:^Airline Record Locator )([a-zA-Z]+([0-9]+).*)").matcher(data);
while(m1.find()) {
System.out.println(m1.group(1));
}
以上正则表达式无法从“航空公司”行获取数据,因此我使用了以下正则表达式。
Pattern.compile("(?m)(?:^Airline )([A-Z]*.*?[a-z]$)").matcher(data);
但是上述正则表达式代码都没有从其他字段中获取值,例如“离开”,“到达终端”,“离开终端”等行数据。
我的问题
我是Regex的新手,感谢任何帮助。感谢。
答案 0 :(得分:1)
public static void test(String totalstring,String valueof){
String arr[]=totalstring.split(valueof);
System.out.println(arr[1].trim());
}
//pass the line and the String for which u want the value ex : Depature
String totalstring ="Departure Terminal Terminal C";
String valueof="Departure";
test(totalstring,valueof);
希望这可以帮到你。如果你需要任何进一步的帮助,请回来
答案 1 :(得分:0)
我认为你可以通过regex使用这个解决方案:
/(.*?)((Airline Record Locator\s+(.*))|(Airline\s+(.*))|(Flight\s+(.*))|(Origin\s+(.*))|(Destination\s+(.*))|(Departing\s+(.*))|(Arriving\s+(.*))|(Departure Terminal\s+(.*))|(Arrival Terminal\s+(.*)))\s*/ig
替换会为您提供\4
,\6
,\8
,......和\20