public class MainTest {
public static void main(String ... args) {
Pattern p = Pattern.compile(args[0]);
Matcher m = p.matcher(args[1]);
while (m.find())
System.out.print(m.start()+" ");
System.out.println();
}
}
Der obige Code, wenn sie mit den Befehlen laufenRegex mit unterschiedlichen Charakterklassen in Java
java MainTest "\b" "^23 *$76 bc"
java MainTest "\B" "^23 *$76 bc"
java MainTest "\S" "^23 *$76 bc"
java MainTest "\W" "^23 *$76 bc"
ergibt
1 3 5 6 7 9
0 2 4 8
0 1 2 4 5 7 8
0 3 4 6
obwohl ich fast sicher gemacht haben, wäre es
1 3 6 8 9 11
0 2 4 5 7 10
0 1 2 4 5 6 7 9 10
0 3 4 5 8
OK, also \w
bedeuten s [0-9A-Za-z_]
und \b
sollten mit allen \w
und \W
Grenze übereinstimmen, und \W
sollte Leerzeichen und Sachen nicht in alnum+
Unterstrich entsprechen. Warum bekomme ich dann diese Ergebnisse? Ich kam hierher, um von einigen meiner ernsten Missverständnisse über Regex in Java befreit zu werden.
@Aaron funktioniert: Das ist genau das, was ich sage. $, b, c sind alle auch nicht-Leerzeichen. Haben Sie versucht, meinen Code auf Ihrem Computer auszuführen? – Ilonpilaaja
Ooh yeah nvm, ich habe mir das falsche Ergebnis angesehen -_- – Aaron
Sieht aus wie Ihre erwartete Ausgabe für mich, wenn Sie keine Befehlszeilenargumente verwenden: http://ideone.com/IbCykI – Marvin