2012-03-24 2 views
0

Text: "AAAA"Regex's Multi-Match?

Muster: "aa"

wird dann zwei Match: aa (0,1), aa (2,3)

wenn ich will drei Match: aa (0,1), aa (1,2), aa (2,3). (Ich glaube, das ist ein klassisches Problem, das ich weiß nicht, wie dies zu beschreiben: '()

Wie kann ich es in Java oder Python oder anderen

+0

Sie etwas um java.util.regex mit einem Muster und eine Matcher versuchen sollten. Probieren Sie zuerst, zeigen Sie, was Sie versucht haben. Es ist ein 4-Zeilen-Problem, Google könnte helfen. – Snicolas

+0

Sie haben Recht. Ich bin dumm. Ich verstehe die Matcher-Klasse falsch. – DouO

Antwort

1

diesen Code Siehe hier:

String str = "aaaa"; 
Pattern p1= Pattern.compile("(aa)"); 
Matcher matcher = p.matcher(str); 
int start = -1; 
while(matcher.find(start + 1)) { 
    start = matcher.start(0); 
    System.out.println("Found: " + start); 
} 

Es gibt:.

Found: 0 
Found: 1 
Found: 2 

Dies ist im Grunde, wie Sie manipulieren, von wo aus das nächste Spiel in Java suchen Hoffentlich wird Ihnen helfen

.
+0

danke, du bist der Erste. – DouO

1

In Python können Sie re.finditer und eine vorwärtsgerichtete Behauptung verwenden:

s = 'aaaa' 
import re 
matches = re.finditer(r'(?=(a{2}))', s) 
results = [match.group(1) for match in matches] 
# -> ['aa', 'aa', 'aa'] 
+0

Danke, das ist hilfreich. – DouO

Verwandte Themen