2017-03-14 12 views
0

私の文字列は、この(1行)のようなものですセミコロンの前にcharまで)。私は見つけることに興味があります:行の正規表現パターンのすべての出現箇所を検索

details=John Smith-age-22 
details=Alice Kohl-age-23 
details=Ram Mohan-city-Dallas 
details=Michael Jack-city-Boston 

誰かがこれを行う方法を教えてもらえますか?申し訳ありませんが、ネット上でそのような例は見つかりませんでした。ありがとう。

答えて

0

このコードを試すことができます。

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)); 
    } 
} 
+0

おかげで、このことができます! しかし、以前は先読み/見た目のことを知らなかった。私は今すぐ医者に行きましたが、他の方法があるかどうかを知りたがっています(先読み以外)。 また、なぜ2番目の '?'が必要なのか説明できますか?パターンのchar?それはどのように役立ちますか? – sburnwal

+0

'。*?'では、 '?'は 'Reluctant quantifiers'のキーワードです。 "Reluctant quantifiers"のヘルプドキュメントをお読みください。 '? 'がなければ、結果は' details = John Smith-age-22;となります。人=詳細= Alice Kohl-age-23;人=詳細= Mohan-city-Dallas Ram;人=詳細=マイケルジャックシティボストン。 – fxleyu

0

私はあなたがしたいの詳細を抽出することができるようにあなたがグループに探しているフィールドを置く場合は、最も簡単にそれを見つけるだろうと思います。

のような何か:返事のための

Pattern personPattern = Pattern.compile("Person=details=(\\w+)-(age-\\d+|city-\\w+); "); 

Matcher matcher = personPattern.match(input); 
while (matcher.find()) { 
    String name = matcher.group(1); 
    String field = matcher.group(2); 
    ... 
} 
関連する問題