2012-03-28 103 views
0

我在一個循環中有一堆輸入文件,我從中提取標籤。不過,我想分開一些單詞。傳入的字符串格式爲cs ###,其中### =>是0-9中的任意數字。我希望結果是cs ###。我發現的最接近的答案是這樣的,Regex to separate Numeric from Alpha。但我無法得到這個工作,因爲字符串正在預定義(靜態)和我的變化。單詞正則表達式紅寶石

找到答案: 沒關係,我找到了答案下面sperates字母數字字符,並刪除任何不需要的非字母數字字符等等之類AB5 @ $ 6%=任何> AB 56

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

回答

3

如果你的字符串是一樣的東西

str = "cs3232 
cs23 
cs423" 

然後,你可以這樣做

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

ŧ他出於某種原因給我語法錯誤 – user1290757 2012-03-28 18:06:43

+1

什麼樣的語法錯誤?這對我行得通。 'scan'是這項工作的正確工具。 – tadman 2012-03-28 18:21:19

+0

'str.scan(/((cs)(\ d {1,10}))/ m).each {| e | e.shift}'也適用,並且更短 – Reactormonk 2012-03-28 19:05:05