通过正则表达式从行中获取3个字符串

问题描述 投票:0回答:1

我有以下几行

我们理解这一要求是另一个联盟的后续行动。此信息不保证提供。

我试图从线上获得3个字符串ein anderes Konsortium,但目前kgString是空的。保持KEYWORD, MULTIMATCHPATTERN, INFORMATIONSEXTRAKTOR结构对我来说很重要。如何通过正则表达式从行中获取ein anderes Konsortium字符串?

public class KlassifizierungsgruppenParser  implements BedarfsanforderungParser  {

    private static final String KEYWORD = ".*Nach unserer Information handelt es sich bei dieser Bedarfsanforderung um einen Folgeabruf ";
    private static final String MULTIMATCHPATTERN = "[\\s\\*\\t]*";
    private static final String INFORMATIONSEXTRAKTOR = "(ein\\s.*anderes.*Konsortium)"; 

    private static final Pattern KGPATTERN = Pattern.compile("^" + KEYWORD + MULTIMATCHPATTERN + INFORMATIONSEXTRAKTOR + "$", Pattern.MULTILINE);   

    @Override
    public void parse(String volltext, Abruf abruf) {

        fillKG(volltext, abruf);
    }

    private void fillKG(String volltext, Abruf abruf) {

        System.out.println("volltext: "  + volltext);

        String kgString = getKg(volltext);
            System.out.println("kgString: " + kgString);

    }

    private String getKg(String volltext) { 
        Matcher matcher = KGPATTERN.matcher(volltext);
        if (matcher.find()) {
            return matcher.group(1);
        } else {
            return "";
        }
    }



}
java regex
1个回答
1
投票

该模式编译为"^.*Nach unserer Information handelt es sich bei dieser Bedarfsanforderung um einen Folgeabruf [\\s\\*\\t]*(ein\\s.*anderes.*Konsortium)$",有两个地方与输入不匹配:

  1. [\\s\\*\\t]*für不匹配 - 要么使用.*,要么将für添加到KEYWORD。
  2. $". Diese Information erfolgt ohne Gewähr."不匹配您可能想删除它。

您可能还想练习正则表达式(例如https://regex101.com/https://regexr.com/https://www.regextester.com/等)以更好地了解它的工作原理。

© www.soinside.com 2019 - 2024. All rights reserved.