Ich bin gerade dabei einen Regex zu erstellen und habe gemerkt, dass es nicht so wirklich klappt. Irgendwie verstehe ich den Aufbau noch nicht so ganz.
Code:
(^delete track$)
Dieser Regex nimmt nur einen String an, welcher "delete track" ist. Möchte ich nun, dass nach dem "track" ein Leerzeichen kommt und dann positive Integer-Werte kommt, wie stelle ich das dann an?
Ich habe an:
Code:
(^delete track$)(\s)([0-9]+)
gedacht, jedoch funktioniert dies nicht. Könnte mir einer erklären, wie man gezielt solche Regex baut, bei denen ein Teil fest definiert ist und der Rest in Maßen frei wählbar ist.
In Java hat der Backslash in Strings die Funktion, nachfolgenden Zeichen eine andere Bedeutung zu geben. So ist es möglich in einem String z. B. Return-Zeichen einzufügen "\r", einen Tabulator ("\t") oder ein beliebiges Unicode-Zeichen "\u0123".
Deswegen muss der Backslash nochmal wiederholt werden, um im String einen Backslash zu erhalten.
Kurz: beide haben Recht aber in Java musst Du die Form mit \\ nehmen.
Ich komme gerade echt an meine Grenzen. Wie soll man solch einen Regex angeben: Lowercase Letter, Modifier Letter, Other Letter, Titlecase Letter, Uppercase Letter und die Ziffern 0-9 aus dem Unicode.
Konkateniert man die Regex dann miteinander oder macht man hier Fallunterscheidungen?
JavaScript kennt reguläre Ausdrücke als Literal, d. h. als Teil der Sprache. Notiert wird dieses mit zwei Schrägstrichen, ggf. unmittelbar von Flags gefolgt: /<regex>/<flags>. Dabei wird regex nicht-escaped angegeben.
/\s/.test(' ') liefert z. B. true.
Es gibt aber auch in JavaScript die Möglichkeit, ein RegExp-Objekt zu erzeugen, das im Konstruktor einen regulären Ausdruck als String entgegennimmt. In einem String-Literal müsste man escapen: new RegExp("\\s").test(' ')
Wie soll man solch einen Regex angeben: Lowercase Letter, Modifier Letter, Other Letter, Titlecase Letter, Uppercase Letter und die Ziffern 0-9 aus dem Unicode.
Das erklärt so einiges, aber da frage ich mich: DAs sieht sehr ähnlich aus zu der Vereinigung von Wörtern und formalen Sprachen.
Wenn ich nun [\p{Lu}\p{Ll}] U W[\p{Lu}\p{Ll}] haben möchte, also dass das W immer nur in konkateniert mit [\p{Lu}\p{Ll}] vorkommen kann. Also wenn das nur das W da steht, soll es nicht erkannt werden, aber wenn bspw. W321321fdfd oder WW oder WE da steht, dann soll es erkannt werden.
Gibt es bei den Regex auch eine ähnliche Operation wie die Vereinigung von Mengen U oder muss man hier dann über eine Fallunterscheidung gehen?
Dann schreibst Du einfach "W[\\p{Lu}\\p{Ll}]" - wobei das nur zwei Buchstaben umfasst. Das erste Zeichen ein W, das zweite eben aus der vereinigten Zeichenklasse. Sollen mehrere Zeichen aus der Zeichenklasse folgen, schreibst Du am Ende noch ein "+".
Mit ein weniger Spielerei hat es nun geklappt. Ist es nun auch möglich bei dem UTF-8 String Zahlen auch zu erlauben also eine Vereinigung von UTF-8 und ganzzahligen Zahlen