2016-04-08 11 views
-1

extrahieren Ich habe Textzeilen wie dieseWie richtig aus einzelnen Zeile

"name      carl (verified)" 

Wie ich so etwas bekommen kann:

["name", "carl", "verified"] 

ich verwende:

text.scan(/\((.*?)\)/) 

aber es passt nur innerhalb ().

+0

Regeln im Allgemeinen nicht von einem einzigen Beispiel abgeleitet werden kann. Zum Beispiel sagt Ihr Beispiel dem Leser nicht, was in "$ name 1 [(verifiziert)] \" cat \ "" 'abgeglichen werden soll. Sie müssen Ihre Frage eindeutig in Worten formulieren. –

Antwort

1

Die straight-forward Weise viel mehr schlaff hier einschließlich, wie viel Platz vorhanden ist:

m = text.match(/\A(\w+)\s+(\w+)\s*\(([^)]*)\)\s*\z/) 

Dann können Sie die Daten aus m wie m[1] und so weiter erhalten.

Die Idee hier ist, dass Sie drei separate Captures auf Ihrer Zeichenfolge haben müssen. scan eignet sich hervorragend zum Herausziehen von sich wiederholenden Mustern, ist aber für One-Shot-Extraktionen viel weniger nützlich.

0

die Zeichenklasse verwenden:

text.scan(/[^\s()]+/) 
0
"name      carl (verified)".delete("()").split 
    #=> ["name", "carl", "verified"] 
2
"name      carl (verified)".scan(/\w+/) 
# => ["name", "carl", "verified"] 
Verwandte Themen