1

Ich versuche Strings jeder Größe zu finden, die NICHT mit {und} wie in foo {bar} umgeben sind, die Regex sollte mit foo, aber nicht mit {bar} übereinstimmen.Wie generiere ich eine Regex um alles außer dem geschweiften Klammerinhalt zu erfassen

Die Regexe, die ich ursprünglich entwickelt habe, waren ^([^${].*[}$]) und ^(?=[{]).+(?<=[}]), aber sie scheinen nicht zu tun, was ich von ihnen erwartete.

+0

abc {pq} d was soll ausgegeben werden? A B C D ? –

+0

Wir wissen nicht genug über Ihre Quellzeichenfolge. Wird es immer wie 'foo {bar}' für die gesamte Saite sein, oder kann es wie 'foo {bar} foo' oder' foo {bar} foo {bar} 'sein? Was sollte der Output für diese sein? – DelightedD0D

+0

@ Maverick_Mrt Ja, die Ausgabe sollte in Ihrem Fall abcd sein. –

Antwort

0

Wenn Sie alle Zeichen abrufen möchten, die nicht in {} enthalten sind, können Sie eine geteilte Operation mit Regex versuchen.

Split die Zeichenfolge dieses regex durch Ihre bevorzugte Sprache verwenden: {.? *}

Das zurückgegebene Array sollte die Segmente bestehen, die außerhalb jeder {}

Die folgende Java gefunden wurde Beispiel gibt einen Array (FER):

String abc="19{22}33{44}55{66}7"; 
String[] arr=abc.split("\\{.*?\\}"); 

, die enthält:

["19","33","55","7"] 
Verwandte Themen