2017-10-03 1 views
0

Es ist spät hier in Europa und ich kann nicht bekommen, dass Regex läuft :-( Ich möchte alle Text entsprechen, das ist nicht umgeben von Anführungszeichen.Regex um alle Vorkommen nicht umgeben von Zitat und Stopp bei Charakter

INPUT:. Oh ja diese, Eingang, 'mit Anführungszeichen', kann; 'sehr', heikel, 'glauben Sie mir', Junge

Es ist wirklich einfach den gesamten Text in Anführungszeichen entsprechen

DEMO

Aber was ich will, ist das Gegenteil. Auch das Spiel sollte geteilt werden durch; so dass ich die folgenden Matches erhalten:

  1. Oh ja diese
  2. Eingang
  3. kann
  4. tricky
  5. Junge

Irgendwelche Ideen, bevor ich verrückt?

Danke im Voraus!

+0

wäre einfacher, wenn Sie die Zeichenfolge aufgeteilt zuerst mit dem Trennzeichen ';' in ein Array und dann prüfen, wenn jedes der Array-Elemente mit einem '' ' – Gurman

+0

beginnt oder endet, oder einfach die Regex' (? <=^|;) [^ ';] + (? =; | $) 'wenn Look-arounds unterstützt werden [ LINK] (https://regex101.com/r/D9NAzo/2) – Gurman

+0

'((? <= (^ |;)) [^;] * [^ '] (? = ($ |;))) 'ist vielseitig genug – JDong

Antwort

1

ich glaube, Sie einen Trick, wie diese verwenden:

'[^;]*'(?=;|$)|([^;]+)(?=;|$) 

Erläuterung:

'[^;]*'(?=;|$)  => finding words between `'` and ended with `;` or end of text, but not group it 
|     => or 
([^;]+)(?=;|$)  => finding other words ended with `;` or end of text, but grouped 

jetzt Sie $1 verwenden können, um zu fangen, was Sie wollen.

[ Regex Demo ]

+0

Kann zu' (?:' [^;] + '| ([^;] +)) vereinfacht werden (? =; | $) ' – ctwheels

+0

Warum glaubst du, dass es vereinfacht ist? Lesbarkeit oder ...? –

+0

Keine Doppelung des Codes. '(? =; | $)' ist zweimal vorhanden, das Entfernen an einer Stelle vereinfacht die Regex-Wartbarkeit und verwendet 3 weniger Zeichen. Ich weiß, dass diese Lösung eine marginale Menge zusätzlicher Schritte verursacht, aber die Wartbarkeit des Codes kann für den Benutzer wichtiger sein. Es sollte immer noch als eine * Option * für den Benutzer zur Verfügung gestellt werden, so dass ich keinen Schaden daran sehe, ein vereinfachtes Muster über Ihrer Antwort vorzuschlagen. – ctwheels

Verwandte Themen