2017-02-16 6 views
0

結果画面に()、[]内に名前が表示されるという要件があります。例:または条件付きの正規表現

(son of X) (Smith),(son of X) Smith 
[Son of X] Smith 
[Son of X] [Smith] 

私はその中のファーストネームを取得したいと考えています。私は最初の文字列の下で正規表現を試しましたが、それは助けにはなりません:

 String name="(son of x) (Smith)"; 
     Matcher matcher = Pattern.compile("\\(.*\\)\\b").matcher(name); 
     while (matcher.find()) { 
       System.out.println(matcher.group()); 
     } 

誰かが正規表現の形成を助けることができますか?また、どのように条件をつけるか教えてください。

+1

[Javadoc](https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html)で「XまたはYのいずれか」を検索します。 –

+2

正確な出力は何ですか? – IfOnly

+0

正規表現と正規表現の両方を試してみましょう。[["\\ []。*?[)\\]] \\ W *(\\ w +)" '](https://regex101.com/r/PrFogN/1)グループ1の値を取得します( 'matcher.group(1)')。 –

答えて

0

あなたは、(または[のいずれかと一致し、その後、^で文字列の先頭で検索を固定、その後キャプチャ 0+最初)または]まで他の文字、する必要があります。文字列の先頭

  • [(\\[] - - [(
  • (.*?) -

    • ^グループ1:

      //String s = "(son of X) (Smith),(son of X) Smith"; // son of X 
      String s = "[Son of X] Smith"; // Son of X 
      Pattern pattern = Pattern.compile("^[(\\[](.*?)[\\])]"); 
      Matcher matcher = pattern.matcher(s); 
      if (matcher.find()){ 
          System.out.println(matcher.group(1)); 
      } 
      

      詳細

      Java demoを参照してください任意の0+文字できるだけ最初に改行文字以外のものを入力してください。

    • [\\])] - a )または]です。
  • 関連する問題