2016-12-20 3 views
0

Mit regulären Ausdruck howto alle Kombination von 2 Zeichen in einer Zeichenfolge zu erhalten?Howto erhalten alle Kombination von 2 Zeichen?

Beispiel: "abcdefghi", Ergebnis: ab, bc, cd, de, ef 3 Zeichen verwenden: abc, bcd, cde, def ...

Ich versuche, mit: /.{2}/g ist aber nicht rekursiv, nur passend ab, cd, ef, aber nicht bc, de, etc.

Wie macht man das?

+0

Ich glaube nicht, dass ich je gesehen habe ein Regex-Implementierung, die überlappende Übereinstimmungen unterstützt. Wenn Sie herausfinden wollen, ob die von Ihnen verwendete Implementierung funktioniert, müssen Sie uns einen kleinen Hinweis geben, welche Implementierung das ist. – jasonharper

+0

Ist php, ich habe eine große Nummer, brauchen in Reihenfolge (von links nach rechts) alle Kombinationen von 2 Ziffern zu Länge/2 von Wert zu finden. –

+1

Möglicherweise relevant: http://stackoverflow.com/questions/18501538/finding-all-3-character-length-substrings-in-a-string ... eine der Antworten deutet darauf hin, dass Sie _regex hier nicht verwenden können, denn sobald ein Brief verbraucht ist, ist er nicht mehr verfügbar. –

Antwort

1

Sie können dies versuchen:

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

Beispiel regex Beispiel here.

Java Beispielcode:

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

} 

Probe Input:

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

Beispielausgabe:

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 
Verwandte Themen