Hallo alle zusammen!
Da Regex in allen Programmiersprachen fast gleich ist, hab ich das Thread mal in Coders Talk eröffnet, ich hoff das ist kein Problem, ansonsten bitte nach Java verschieben.
Ich benötige einen Regex der folgendes macht:
Here-11111-Is_Some_Weird_Stuff-Not-interesting_me-1111-ALLOWED
Here-11111-Is_-Some_Weird_Stuff-Not-interesting_me-1111-FORBIDDEN
Wenn der String auf -ALLOWED endet, soll er nicht matchen. Wenn der String jedoch auf -FORBIDDEN endet, soll er matchen und FORBIDDEN als Group 1 zurückgeben.
Mein Regex:
Gibt nur bei <STRING>-<IRGENDWAS> "IRGENDWAS" in Group 1 zurück, wenn <IRGENDWAS> nicht "ALLOWED" oder "ALLOWED2" ist. Habs auf http://www.regexplanet.com/simple/index.html und http://www.rubular.com/r/6UUh3yimSb getested, funktioniert bei beiden prima. Jedoch wenn ich es in Java so implementiere:
Matcht er irgendwie garnicht, weder "ALLOWED" noch "FORBIDDEN". Ich seh allerdings den Grund nicht, sind ja keine Chars drin die ich Escapen müsste? Hat jemand ne Idee worans liegt?
Mfg
Da Regex in allen Programmiersprachen fast gleich ist, hab ich das Thread mal in Coders Talk eröffnet, ich hoff das ist kein Problem, ansonsten bitte nach Java verschieben.
Ich benötige einen Regex der folgendes macht:
Here-11111-Is_Some_Weird_Stuff-Not-interesting_me-1111-ALLOWED
Here-11111-Is_-Some_Weird_Stuff-Not-interesting_me-1111-FORBIDDEN
Wenn der String auf -ALLOWED endet, soll er nicht matchen. Wenn der String jedoch auf -FORBIDDEN endet, soll er matchen und FORBIDDEN als Group 1 zurückgeben.
Mein Regex:
Code:
-(?!ALLOWED|ALLOWED2)((?>[^-]+))$
Code:
public class Test {
static String str = "Here-11111-Is_-Some_Weird_Stuff-Not-interesting_me-1111-FORBIDDEN";
//static String str = "Here-11111-Is_-Some_Weird_Stuff-Not-interesting_me-1111-ALLOWED"
static String regex = "-(?!ALLOWED|ALLOWED2)((?>[^-]+))$";
public static void main(String... args) throws IOException {
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(str);
if(m.matches()) {
System.out.println("group: "+m.group(1));
} else {
System.out.println("nope");
}
}
}
Mfg