2012-03-28 16 views
0

Ich habe eine Reihe von Eingabedateien in einer Schleife und ich extrahiere Tag von ihnen. Ich möchte jedoch einige der Wörter trennen. Die eingehenden Zeichenfolgen haben die Form cs ### wobei ### => eine beliebige Zahl von 0-9 ist. Ich möchte, dass das Ergebnis cs ### ist. Die nächste Antwort, die ich fand, war diese, Regex to separate Numeric from Alpha. Aber ich kann das nicht zum Laufen bringen, da der String vordefiniert ist (Statisch) und meine Änderungen.Separates Wort Regex Ruby

gefunden Antwort: Nevermind, fand ich die Antwort der folgende sperates alphanumerischen Zeichen und entfernt alle unerwünschten nicht-alphanumerischen Zeichen so etwas wie AB5 @ $ 6% => ab 56

gsub(/(?<=[0-9])(?=[a-z])|(?<=[a-z])(?=[0-9])/i, ' ').gsub(/[^0-9a-z ]/i, ' ') 

Antwort

3

Wenn Ihr String ist so etwas wie

str = "cs3232 
cs23 
cs423" 

Dann sind Sie so etwas wie

str.scan(/((cs)(\d{1,10}))/m).collect{|e| e.shift; e } 
# [["cs", "3232"], ["cs", "23"], ["cs", "423"]] 
+0

T tun können er gibt mir Syntaxfehler aus irgendeinem Grund – user1290757

+1

Welche Art von Syntaxfehlern? Das ist für mich in Ordnung. 'scan' ist das richtige Werkzeug für diesen Job. – tadman

+0

'str.scan (/ ((cs) (\ d {1,10}))/m) .eines {| e | e.shift} 'funktioniert auch und ist kürzer – Reactormonk