2011-10-13 9 views
7

重複するかどうかにかかわらず、式のすべてのインスタンスを取得する正規表現はありますか?重複している正規表現を返す

など。 /で始まるすべての文字列をキャプチャしたい場合は/abc/def/ghiにしてください。正規表現(/.*)は文字列全体を返すだけですが、/def/ghi/ghiにも一致させたいと思います。

+0

興味深い主題を。ちょうど '/ abc'、'/def'と '/ ghi'とのマッチングはあなたが探しているものではありませんか? – Arjan

+0

@Arjanいいえ、そうではありません。それは簡単すぎるだろう! –

+1

私は[1] '(=(/.*)?)'トリックは、[重複が一致する]も参照のないこと[1] を見つける:http://stackoverflow.com/q/320448/ 653295 – mousio

答えて

8

確かに、空の文字列にマッチし、それがそのキャプチャグループに/.*をキャプチャした後、先読みを置く:

Matcher m = Pattern.compile("(?=(/.*))").matcher("/abc/def/ghi"); 
while(m.find()) { 
    System.out.println(m.group(1)); 
} 

を印刷します:

/abc/def/ghi 
/def/ghi 
/ghi 
関連する問題