2012-04-03 6 views
3

I次の文字列を持っている:ブラケットから文字列を取り出す正規表現ですか?

「ドラゴンタトゥー(リズベス)を持つ少女」

と私は入力の最後に括弧にのみの文字列を取得する必要があります。

は、これまでのところ、私はこれに来た:

public static void main(String[] args) { 

    Pattern pattern = 
    Pattern.compile("\\({1}([a-zA-Z0-9]*)\\){1}"); 

    Matcher matcher = pattern.matcher("The girl with the dragon tattoo (LISBETH)"); 

    boolean found = false; 
    while (matcher.find()) { 
     System.out.println("I found the text " + matcher.group() 
       + " starting at " + "index " + matcher.start() 
       + " and ending at index " + 
       matcher.end()); 
     found = true; 
    } 
    if (!found) { 
     System.out.println("No match found"); 
    } 
} 

しかし、私が得る結果:(LISBETH)

これらの角かっこからどうやって離れますか?

ありがとうございます!

答えて

3

使用して背後に見て、先に見て、あなたは/それらの背後に/先読み一致していない、彼らは単に「チェック」している

Pattern.compile("(?<=\\()[a-zA-Z0-9]*(?=\\))"); 

グループへのアクセスに使用する必要はありませんので、それら大括弧はマッチの一部ではありません。

+0

+1、等号の後ろに肯定的な表情ではありません。(?<= \\() '? –

+0

@PetarMinchevもちろん正しいです。 – stema

+2

一般的なヒント:あなたが必要としないときには、*不要な表現を複雑にするだけでなく、場合によっては間違っていることもあります。この場合、うまくいくでしょう。 "foo"、 "bar"、 "baz"を見つけるでしょう。 – Qtax

10

使用このパターン:その後、\\((.+?)\\)とグループ1

public static void main(String[] args) { 

    Pattern pattern = Pattern.compile("\\((.+?)\\)"); 
    Matcher matcher = pattern.matcher("The girl with the dragon tattoo (LISBETH)"); 

    boolean found = false; 
    while (matcher.find()) { 
     System.out.println("I found the text " + matcher.group(1) 
       + " starting at " + "index " + matcher.start() 
       + " and ending at index " + 
       matcher.end()); 
     found = true; 
    } 
    if (!found) { 
     System.out.println("No match found"); 
    } 
} 
+0

ありがとうございますが、もう一度 - (LISBETH)を取得します。私は結果としてLISBETHだけ必要です。 – karla

+0

本当ですか?コンパイルする前にファイルを保存しましたか?私はちょうど私のプロジェクトにこのメソッドをコピーしたので、正常に動作します。 – shift66

+0

私はあなたのパターンがうまくいった!ありがとうございました! – karla

3

あなたはすでにそれを持っているので、単に「マッチングにgroup(1)start(1)end(1)からgroup()start()end()呼び出しを変更する、本当に接近しているの取得グループ"。 APIからの引用

:前回のマッチで一致した入力部分シーケンスを返し

パブリックストリンググループ()

そして:前回のマッチ操作で指定されたグループによってキャプチャ入力シーケンスを返し

パブリックストリンググループ(INT基)

関連する問題