2016-12-20 10 views
0

正規表現howtoを使用すると、文字列上の2文字すべての組み合わせを取得できますか?2文字の組み合わせをすべて入手するには?

例: "ABCDEFGHI"、結果:AB、BC、3つの文字使用してCD、DE、EF :ABC、BCD、CDEを、デフ...

私が試してみてください。/.{2}/gが、再帰的ではありません、 ab、cd、efにのみ一致しますが、bc、deなどには一致しません。

Howtoこれを行うには?

+0

私は私が今まで見てきたとは思いませんa重複するマッチをサポートする正規表現の実装。使用している実装が何かを知りたい場合は、実装がどれであるかについて少しヒントを与える必要があります。 – jasonharper

+0

PHPは、私は大きな数字を持って、見つけるためにlentght/2の2桁のすべての組み合わせを順番に(左から右へ)分離する必要があります。 –

+1

おそらく関連性があります:http://stackoverflow.com/questions/18501538/finding-all-3-character-length-substrings-in-a-string ...答えの1つは、あなたがここで正規表現を使用できないことを示唆しています。なぜなら、手紙が消費されると、それはもはや利用できないからです。 –

答えて

1

あなたはこれを試すことができます。

(?=(\w{2}))\w 

サンプル正規表現の例hereを。

のJavaサンプルコード:

public static void printVal(String str,int length) 
{ 
    final String regex="(?=(\\w{"+length+"}))\\w"; 
    final Pattern pattern=Pattern.compile(regex,Pattern.MULTILINE); 
    final Matcher matcher=pattern.matcher(str); 
    System.out.println("length :"+length);   
    while(matcher.find()) 
    { 
     System.out.println(matcher.group(1)); 
    } 

} 

サンプル入力:

printVal("abcdefghi",2); 
printVal("abcdefghi",3); 
printVal("abcdefghi",4); 

サンプル出力:

length :2 
ab 
bc 
cd 
de 
ef 
fg 
gh 
hi 
length :3 
abc 
bcd 
cde 
def 
efg 
fgh 
ghi 
length :4 
abcd 
bcde 
cdef 
defg 
efgh 
fghi 
関連する問題