Ich versuche, die folgenden Zeichenfolgen zu validieren:
org/com[2]/net[4]/uk@name
org/com[2]/net[4]
Warum funktioniert der folgende reguläre Ausdruck nicht?
(((.*(\[.*?\])((\/)?)))|(\@(.*)))
Bitte um Hilfe.
Ich versuche, die folgenden Zeichenfolgen zu validieren:
org/com[2]/net[4]/uk@name
org/com[2]/net[4]
Warum funktioniert der folgende reguläre Ausdruck nicht?
(((.*(\[.*?\])((\/)?)))|(\@(.*)))
Bitte um Hilfe.
Warum funktioniert der folgende reguläre Ausdruck nicht?
Ihr Ausdruck lässt sich wie folgt aufschlüsseln
(.*(\[.*?\])((\/)?))
, oder(\@(.*))
Der erste Teil kann wie folgt unterteilt werden
.*
gefolgt von\[.*?\]
(was nicht dasselbe ist wie (\[.*\])?
), möglicherweise gefolgt von/
Hier ist ein weiterer Vorschlag:
String part = "[^/\\[\\]]+(\\[\\d*\\])?";
String pattern = String.format("%s(/%<s)*(@.*)?", part);
Testfälle:
String[] tests = {
"org/com[2]/net[4]/uk@name",
"org/com[2]/net[4]",
"org/com[2/net",
"org/com2]/net",
"org/com[2]/net",
"org/com[2]/net/",
"org/com[2]/net@blah",
};
for (String test : tests)
System.out.println(test + ": " + test.matches(pattern));
Salida:
org/com[2]/net[4]/uk@name: true
org/com[2]/net[4]: true
org/com[2/net: false
org/com2]/net: false
org/com[2]/net: true
org/com[2]/net/: false
org/com[2]/net@blah: true
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.