Regulären Ausdruck automatisch erstellen

H

hüteüberhüte

Gast
Hallo! Gibt es eine Möglichkeit, aus einem gegebenen String automatisch einen Regex zu erstellen, der diesen String matcht, und wobei alle in dem String vorkommenden Metazeichen maskiert werden?

Bsp.Eingabe:
Code:
<tr>
<td><a href="" /></a></td>
<td><a href="" /></a></td>
<td><a href="" /></a></td>
</tr>
 
S

SlaterB

Gast
Java:
public class Test
{

    public static void main(String[] args)
    {
        String test = "<tr>"+
            "\n<td><a href=\"\" /></a></td>"+
            "\n<td><a href=\"\" /></a></td>"+
            "\n<td><a href=\"\" /></a></td>"+
            "\n</tr>";    
        String test2 = Pattern.quote(test);
        System.out.println(test2);
        System.out.println(test.matches(test2));
        
    }
}
 
H

hüteüberhüte

Gast
Ausgabe:
Code:
\Q<tr>
<td><a href="" /></a></td>
<td><a href="" /></a></td>
<td><a href="" /></a></td>
</tr>\E

Es wird also einfach nur \Q voran- und \E nachgestellt

Code:
\Q
: Nothing, but quotes all characters until \E
Code:
\E
: Nothing, but ends quoting started by \Q

Das heißt, ich kann im regulären Ausdruck innerhalb von \Q...\E keine Metazeichen mehr verwenden. Diese benötige ich aber an einigen Stellen...
 
H

hüteüberhüte

Gast
Code:
System.out.println(s.replaceAll("[\\Q<([{\\^-=$!|]})?*+.>\\E]", "XXX"));
würde alle Metazeichen durch XXX ersetzen. Dabei geht aber wiederum das Metazeichen an sich verloren
 
H

hüteüberhüte

Gast
Hab jetzt etwas gefunden, was auch funktioniert:

Java:
        StringBuilder sb = ...der Text...
        Matcher m = Pattern.compile("[\\Q<([{\\^-=$!|]})?*+.>\\E]").matcher(sb);
        StringBuilder sb2 = new StringBuilder();
        int start = 0;
        while (m.find()) {
            sb2.append(sb.subSequence(start, m.start()));
            sb2.append("\\\\");
            sb2.append(m.group());
            start = m.end();
        }
        sb2.append(sb.subSequence(start, sb.length()));
        System.out.println(sb2.toString().replaceAll("\n", "\\\\n").replaceAll("\"", "\\\\\""));

Alle Metazeichen werden durch \\ (+ das Metazeichen) ersetzt, alle newlines werden duch \n ersetzt und alle Anführungszeichen durch \"

Hier nochmal die entsprechende Methode:

Java:
    public static String getRegex(String s) {
        Matcher m = Pattern.compile("[\\Q<([{\\^-=$!|]})?*+.>\\E]").matcher(s);
        StringBuilder sb = new StringBuilder();
        int start = 0;
        while (m.find()) {
            sb.append(s.substring(start, m.start()));
            sb.append("\\\\");
            sb.append(m.group());
            start = m.end();
        }
        sb.append(s.substring(start, s.length()));
        return sb.toString().replaceAll("\n", "\\\\n").replaceAll("\"", "\\\\\"");
    }
 
Zuletzt bearbeitet von einem Moderator:
Ähnliche Java Themen
  Titel Forum Antworten Datum
berserkerdq2 Wie würde man einen regulären Ausdruck in Java schreiben, der prüft, dass zwei bestimtme Zahlen nicht nebeneinadner sind? Java Basics - Anfänger-Themen 3
K Regulären Ausdruck in Java abbilden Java Basics - Anfänger-Themen 4
A regulären Ausdruck mit Hilfe der Klasse Scanner in einem String finden Java Basics - Anfänger-Themen 2
E Hilfe bei einem Regulären Ausdruck Java Basics - Anfänger-Themen 7
3 3. Element mit regulären Ausdruck suchen Java Basics - Anfänger-Themen 12
O Gibt es dafür einen regulären Ausdruck? Java Basics - Anfänger-Themen 9
R Regulären Ausdruck geht nicht Java Basics - Anfänger-Themen 2
T Wie sieht ein '.' im regulären Ausdruck aus? Java Basics - Anfänger-Themen 2
G Wie erstellt man komplexen regulären Ausdruck Java Basics - Anfänger-Themen 5
W Regulären Ausdrücken Java Basics - Anfänger-Themen 8
F Frage zu regulären Ausdrücken Java Basics - Anfänger-Themen 4
M Textsuche mit regulären Ausdrucken Java Basics - Anfänger-Themen 6
J Automatentheorie-Darstellung der regulären Sprache eines DEA Java Basics - Anfänger-Themen 5
S Frage zu regulären Ausdrücken Java Basics - Anfänger-Themen 6
B Nach regulären Ausdrücken suchen Java Basics - Anfänger-Themen 14
A Counter für die anzahl von regulären ausdrücken Java Basics - Anfänger-Themen 4
F Aus Regulären Ausdrücken Zufallszahlen bilden Java Basics - Anfänger-Themen 6
O regulären Ausdrücken Java Basics - Anfänger-Themen 2
T HTML Kommentare mit regulären Ausdrücken entfernen Java Basics - Anfänger-Themen 4
D Klammern in regulären Ausdrücken Java Basics - Anfänger-Themen 2
G Problem mit Regulären Ausdrücken Java Basics - Anfänger-Themen 4
W Reguläre Ausdruck Java Basics - Anfänger-Themen 6
hebein PDF Ausdruck auf Drucker - Probleme mit Format Java Basics - Anfänger-Themen 17
K Warum zeigt dieser reguläre Ausdruck true an? Java Basics - Anfänger-Themen 1
P Einfacher regulärer Ausdruck (RegEx) für E-Mail-Adressen Java Basics - Anfänger-Themen 2
KogoroMori21 Boolscher Ausdruck Java Basics - Anfänger-Themen 15
C Ausdruck Java Basics - Anfänger-Themen 4
E Boolescher Ausdruck Java Basics - Anfänger-Themen 1
M Regex-Ausdruck: Alle Zeichen bis auf ein bestimmtes erlauben (p{L}) Java Basics - Anfänger-Themen 5
G Warum ist hier ein Lamda-Ausdruck möglich Java Basics - Anfänger-Themen 2
O Lambda Ausdruck mit Wildcard einschränken Java Basics - Anfänger-Themen 5
F Ist das ein korrekter Regex-Ausdruck? Java Basics - Anfänger-Themen 12
B Interface Java Lambda Ausdruck. Java Basics - Anfänger-Themen 11
B Regulärer Ausdruck Java Basics - Anfänger-Themen 12
G Boolschen Ausdruck true machen Java Basics - Anfänger-Themen 2
F Ausdruck wirft unerwarteten Error Java Basics - Anfänger-Themen 2
D Regulärer Ausdruck Java Basics - Anfänger-Themen 8
B Regulärer Ausdruck Java Basics - Anfänger-Themen 3
M Lambda - Ausdruck zu Beschreibung erstellen Java Basics - Anfänger-Themen 7
D Java Ausdruck erzeugen / Formular Java Basics - Anfänger-Themen 4
B Boolscher Ausdruck für mich unverständlich Java Basics - Anfänger-Themen 7
J Frage zu bestimmtem Ausdruck Java Basics - Anfänger-Themen 2
G Lambda Ausdruck: Welche Methode ist die Richtige? Java Basics - Anfänger-Themen 1
C Auswertung Ausdruck mit Punknotation + Objekt als Parameter Java Basics - Anfänger-Themen 3
M Arithemtischer Ausdruck unklar Java Basics - Anfänger-Themen 2
C Regulärer Ausdruck matched nicht Java Basics - Anfänger-Themen 2
A Lässt sich dieser Ausdruck irgendwie einfacher schreiben? Java Basics - Anfänger-Themen 4
T Erste Schritte Im arithm. Ausdruck Zeichen trennen? Java Basics - Anfänger-Themen 13
D Boolescher Ausdruck - Problem Java Basics - Anfänger-Themen 6
B Regulärer Ausdruck gesucht Java Basics - Anfänger-Themen 6
M regulärer Ausdruck funktioniert nicht Java Basics - Anfänger-Themen 6
R Suche Regex Ausdruck für HTML Java Basics - Anfänger-Themen 11
X Regulärer Ausdruck für einen FileNameFilter Java Basics - Anfänger-Themen 2
S Einfaches Regulaerer Ausdruck Problem Java Basics - Anfänger-Themen 7
S regulärer Ausdruck HTML Java Basics - Anfänger-Themen 5
turmaline Ein regulärer Ausdruck für HTML-Sonderzeichen Java Basics - Anfänger-Themen 3
M regex-Ausdruck irgendein Buchstabe 1 mal Java Basics - Anfänger-Themen 8
S Was bedeutet dieser ausdruck? Java Basics - Anfänger-Themen 9
S String nach Ausdruck durchsuchen und Folgeattribut ausgeben Java Basics - Anfänger-Themen 3
H Ausdruck vereinfachen Java Basics - Anfänger-Themen 8
J Datentypen String splitten ohne festen Ausdruck Java Basics - Anfänger-Themen 8
H while schleife ohne ausdruck Java Basics - Anfänger-Themen 7
H Datei durchsuchen mit Regex-Ausdruck Java Basics - Anfänger-Themen 14
B regulärer Ausdruck mit Metazeichen Java Basics - Anfänger-Themen 4
O RegEx-Ausdruck gesucht Java Basics - Anfänger-Themen 2
C bedingten ausdruck zu if-anweisung Java Basics - Anfänger-Themen 3
D regulärer Ausdruck: ^ $ Java Basics - Anfänger-Themen 6
O Mal wieder ein Regex-Ausdruck gesucht! Java Basics - Anfänger-Themen 5
F Regulärer Ausdruck warum false ? Java Basics - Anfänger-Themen 3
O Regulärer Ausdruck gesucht Java Basics - Anfänger-Themen 2
S Regulärer Ausdruck - alles was keine Zahl ist entfernen Java Basics - Anfänger-Themen 2
S regulärer ausdruck zum zählen eines wortes Java Basics - Anfänger-Themen 4
K Regulärer Ausdruck Java Basics - Anfänger-Themen 7
L Regulärer Ausdruck Java Basics - Anfänger-Themen 2
J Bitte um Erklärung für einen Java-Ausdruck Java Basics - Anfänger-Themen 8
M regulärer Ausdruck Java Basics - Anfänger-Themen 3
G Boolscher Ausdruck Java Basics - Anfänger-Themen 11
R Reguläre Ausdruck definieren Java Basics - Anfänger-Themen 3
G Substrings in regulärem Ausdruck Java Basics - Anfänger-Themen 2
F Boolescher Ausdruck (String) in boolean konvertieren Java Basics - Anfänger-Themen 5
F Der "super" Ausdruck Java Basics - Anfänger-Themen 4
S Ausdruck zur Laufzeit auswerten Java Basics - Anfänger-Themen 10
G Was zum Teufel ist denn so ein Ausdruck"variabel : vari Java Basics - Anfänger-Themen 8
X Regulärer Ausdruck Java Basics - Anfänger-Themen 6
E regulärer Ausdruck -> wo ist der Fehler Java Basics - Anfänger-Themen 9
G regulärer Ausdruck alles was zwischen ' ' steht Java Basics - Anfänger-Themen 4
P Zeile als regulärer Ausdruck Java Basics - Anfänger-Themen 5
G Regulärer Ausdruck: gefunden und gleichzeitig nicht gefunden Java Basics - Anfänger-Themen 5
M Scanner soll nach einem Ausdruck splitten Java Basics - Anfänger-Themen 2
R Ausdruck Java Basics - Anfänger-Themen 2
M regulärer Ausdruck zum Parsen einer E-Mail Signatur Java Basics - Anfänger-Themen 16
T Regulärer Ausdruck Java Basics - Anfänger-Themen 4
J Was sagt mir dieser Ausdruck? Java Basics - Anfänger-Themen 9
G regulärer ausdruck zur überprüfung von ip-adresse? Java Basics - Anfänger-Themen 13
S Ausdruck? Java Basics - Anfänger-Themen 5
H Automatisch Folgen? Java Basics - Anfänger-Themen 1
T TextField Breite automatisch gebunden Java Basics - Anfänger-Themen 8
S Personalnummer automatisch generieren Java Basics - Anfänger-Themen 11
P Variablen HttpResponse.getBody() wird automatisch org.json Object und kann nicht zu json.simple Object gecastet werden? Java Basics - Anfänger-Themen 7
J CMD schließt sich automatisch Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben