2017-02-06 8 views
0

ich mit dem folgenden Text habe Schwierigkeiten:Erhalten Sie Text zwischen zwei „“

c(\Study:\", \"Job:\", \"Branch:\", \"Position:\", \"Naming:\", NA, NA, \"Banker\", \"VP of Sales\", \"\", NA, NA, NA, NA, NA)" 

Ich möchte von einem regulären Ausdruck bekommen, die VP of Sales. Anstelle der VP of Sales können andere Dinge genau an diesem Ort sein.

Ich versuchte Folgendes, \\\"(.*?)\", die den gesamten Text erfasst, aber nicht die VP of Sales.

Irgendwelche Vorschläge? Ich schätze Ihre Antwort!

+0

Ist das, was Sie schon immer in der n-ten Spalte wollen? Ist es die einzige Spalte, die Leerzeichen enthält oder "von?" Wie sehen andere Datenreihen aus? Sei genauer. Ansonsten empfehle ich einfach \\\ "(VP of Sales)" –

+0

Ihre Eingabe ist falsch. Sie haben am Anfang des Textes ein '' 'zwischen' Study' verpasst. Korrekte Regex sollte '\\\" sein (. *?) \\\ "' –

+0

@WesFoster Anstelle des 'VP of Sales' anderen Dinge können genau an diesem Ort sein. Ich möchte die 7. Spalte im Grunde. Irgendwelche Vorschläge? – mrquad

Antwort

2

Da die Daten, die Sie wollen immer in der gleichen Spalte sein wird, dies nur tun:

/(?:, [^,]+){7}, \\\"(.*?)\\\".*/g 

Im Grunde ist dies überspringt die ersten Säulen (begrenzt durch , [^,]) (Nummer kann in {7} geändert werden) und erfasst die Daten in Anführungszeichen, die unmittelbar darauf folgen, ignoriert dann den Rest.

Hier ist eine Demo: http://www.regexpal.com/?fam=96828

+0

Beachten Sie, dass dies fehlschlägt, wenn ein vorheriges Feld ein Komma enthält (z. B. "Technisch, Senior"), was plausibel erscheint. Ich bezweifle jedoch, dass es viel besser mit Regex zu tun ist. – Aaron

+0

Korrigieren. Gut zu bemerken, @Aaron –

Verwandte Themen