Java 正则表达式没有从所有字段中获取正确的值

Java 正则表达式没有从所有字段中获取正确的值,java,regex,selenium,Java,Regex,Selenium,我需要从PDF文件中获取数据,并将其用作使用SeleniumWebDriver测试应用程序的测试数据 我将pdf数据存储在一个变量中,并逐个获取所需的数据 现在我面临的问题是,下面的数据可以在该文件中多次出现,只有粗体的数据会发生变化。我需要获取那些大胆的值 航空公司记录定位器JUI1244 航空公司XXX航空公司 航班HU124 始发地CCC CST机场 目的地XXX YYY,国际 出发时间:晚上7:35 抵达时间:2015年10月24日上午9:20 出发C航站楼 到达1号航站楼 我尝试使用子

我需要从PDF文件中获取数据,并将其用作使用SeleniumWebDriver测试应用程序的测试数据

我将pdf数据存储在一个变量中,并逐个获取所需的数据

现在我面临的问题是,下面的数据可以在该文件中多次出现,只有粗体的数据会发生变化。我需要获取那些大胆的值

航空公司记录定位器JUI1244

航空公司XXX航空公司

航班HU124

始发地CCC CST机场

目的地XXX YYY,国际

出发时间:晚上7:35

抵达时间:2015年10月24日上午9:20

出发C航站楼

到达1号航站楼

我尝试使用子字符串获取值,但它总是给我第一个实例值。因此,我尝试使用正则表达式,并能够使用下面的正则表达式获得“航空公司记录定位器”行值

 Matcher m1 = Pattern.compile("(?m)(?:^Airline Record Locator )([a-zA-Z]+([0-9]+).*)").matcher(data);
while(m1.find()) {
        System.out.println(m1.group(1));
}
上面的正则表达式不从“Airline”行获取数据,因此我使用下面的正则表达式

 Pattern.compile("(?m)(?:^Airline )([A-Z]*.*?[a-z]$)").matcher(data); 
但上述两个正则表达式代码都没有从其他字段(如“出发”、“到达终端”、“出发终端”)获取值。。行数据

我的问题

  • 如何从上述字段‘出发’、‘到达终点站’、‘出发终点站’等中获取值
  • 我是否需要使用不同的正则表达式模式从不同的字段获取值?或者是否有任何方法可以使用单个正则表达式模式从所有行获取数据(显然字符串可以不同,但我们可以使用相同的正则表达式模式)

  • 我是Regex的新手,非常感谢您的帮助。谢谢。

    我认为您可以通过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


    希望这对您有所帮助。如果您需要任何进一步的帮助,请返回

    您是否尝试过使用java中作用于字符串的split方法进行拆分。split(“”)//将按空格分割。如果您需要更多详细信息,请返回。我们提到在哪里停止使用分割?我尝试了下面的代码,它正在打印整个数据。对于(stringretval:data.split(“航空公司记录定位器”){System.out.println(retval);}我也尝试了limit,但它仍然在打印整个数据。如果我遗漏了什么,请告诉我。我们看不到您在评论中提到的代码。谢谢。它没有给我我想要的确切数据,但至少给了我可以进一步研究以获得所需数据的数据。您好@shA.t,谢谢您的回复。我将对此解决方案做更多的工作,并会让您知道。(我需要检查如何使用值\4、\6等…当
    I
    是您的字段号时,它就是
    2+2*I
    ;)。
    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);