-1

Ich mag diesen String passen:Recht RegEx Syntax

<Array value="Default"> 
<Element value="5"/> 

ich mit negativen Lookahead versucht:

^((?!^\<Array value\=\"[a-zA-ZäöüßÄÖÜ]+\"\>).) 
^((?!^\<Element value\=\"[0-9]+\"\/\>).)*$ 

Zum Beispiel, wenn ich das Token löschen '>' dann wird das Spiel wahr sein . Aber in jedem Fall ist falsch.

Wenn ich dieses Spiel versuchen

^((?!^\<Array value\=\"[a-zA-ZäöüßÄÖÜ]+\"\>).)*$ 

zu diesem String (wo ich das Token habe löschen '>')

<Array value="Default" 

dann kommt heraus, dass wahr ist. Also ich denke der Fehler ist, dass die zwei Zeilen dieser Regulären Ausdrücke falsch kombiniert sind.

Hat jemand eine Lösung für mein Problem?

Sorry für mein schlechtes Englisch!

+0

Welchen Regex-Geschmack verwenden Sie (aus welcher Programmiersprache)? Und was genau wollen Sie in Ihrem Ergebnis? Es wäre einfacher, die gesamte Zeichenfolge abzugleichen und Gruppen zu verwenden, um auf die Werte zuzugreifen, als Lookaheads zu verwenden und nur die Werte abzugleichen. –

+0

Ich benutze Java. Ich möchte testen, ob diese Zeichenfolge die richtige Syntax und keinen falschen Buchstaben oder etwas ähnliches enthält. Zum Beispiel "

+0

Vergessen Sie nicht, eine Antwort zu akzeptieren, wenn Ihr Problem gelöst wurde. Sie können dies tun, indem Sie auf das graue Häkchen-Symbol links neben einem von ihnen klicken. –

Antwort

0

BEARBEITEN Ich glaube nicht, dass Sie Negative Lookahead benötigen, um die gesamte Zeichenfolge anzupassen. Sie könnten versuchen:

<Array\s+value="[^"]+">\s+<Element\s+value="[^"]+"\/> 

REGEX 101 DEMO

+0

Sie könnten ersetzen '[^"] + 'mit'. +? 'Und Ihre Entkommen von doppelten Anführungszeichen ist inkonsistent. Sie könnten auch freundlicher sein sollte mit dem Sie erlauben oder Räume erfordern. –

+0

Dank für den Hinweis auf die inkonsistente Ausgabe von Das doppelte Zitat: Es gibt einen Unterschied zwischen '[^"] + 'und'. +? '; Letzteres passt nicht zum Newline-Charakter. – Quinn

+1

Es gibt ein Flag, das ausgelöst wird, wenn ein Punkt '.' auch Newline-Zeichen entspricht oder nicht. Damit funktioniert '. +?' Auch, wenn dazwischen ein Zeilenumbruch stattfindet. Allerdings würde ich in diesem speziellen Fall hier keinen erwarten. –

0

Sie dieses Muster verwenden konnten die beiden Werte als Gruppen in dem resultierenden Spiel zu bekommen. Beachten Sie, dass Sie möglicherweise das mehrzeilige Flag Ihrer Regex-Implementierung festlegen müssen.

^\s*<\s*Array\s+value\s*=\s*"(.+?)"\s*>\s*<\s*Element\s+value\s*=\s*"(.+?)"\s*/?\s*>\s*$