このコードを試すことができます。
public static void main(String[] args) {
String input = "Details of all persons. Person=details=John Smith-age-22; Person=details=Alice Kohl-age-23; Person=details=Ram Mohan-city-Dallas; Person=details=Michael Jack-city-Boston;";
Pattern pattern = Pattern.compile("(?<=Person=).*?(?=;)");
Matcher matcher = pattern.matcher(input);
while (matcher.find()) {
String str = matcher.group();
System.out.println(str);
}
}
ませアサーション
public static void main(String[] args) {
String input = "Details of all persons. Person=details=John Smith-age-22; Person=details=Alice Kohl-age-23; Person=details=Ram Mohan-city-Dallas; Person=details=Michael Jack-city-Boston;";
Pattern pattern = Pattern.compile("Person=.*?;");
Matcher matcher = pattern.matcher(input);
while (matcher.find()) {
String str = matcher.group();
System.out.println(str.substring(7, str.length()-1));
}
}
おかげで、このことができます! しかし、以前は先読み/見た目のことを知らなかった。私は今すぐ医者に行きましたが、他の方法があるかどうかを知りたがっています(先読み以外)。 また、なぜ2番目の '?'が必要なのか説明できますか?パターンのchar?それはどのように役立ちますか? – sburnwal
'。*?'では、 '?'は 'Reluctant quantifiers'のキーワードです。 "Reluctant quantifiers"のヘルプドキュメントをお読みください。 '? 'がなければ、結果は' details = John Smith-age-22;となります。人=詳細= Alice Kohl-age-23;人=詳細= Mohan-city-Dallas Ram;人=詳細=マイケルジャックシティボストン。 – fxleyu