2010-10-28 21 views
0

我已經串"(1,2,3,4,5,6),(1,2,3)"我想將其更改爲"('1','2','3','4','5','6'),('1','2','3')"部分字符串 - replase是符合項目/([^,)("])/'$1', '$2'如何更新符合一些正則表達式

+1

爲什麼不直接用撇號中的數字代替數字? – 2010-10-28 13:37:12

+0

因爲可以有任何東西不只有數字(浮點數,字符串) – Bohdan 2010-10-28 13:40:11

回答

1
"(1,2,3,4,5,6),(1,2,3)".gsub(/([^,)("]\w*)/,"'\\1'") 

gsub所有部分是「全球替換「String class中的方法。它發現全部出現給定的正則表達式,並用作爲第二個參數給出的字符串替換它們(與僅替換第一次出現的sub相反)。該字符串可以包含對正則表達式中標記爲()的組的引用。第一組是1,第二組是2,依此類推。

+1

這將工作,但你需要在集合後面添加一個'+'來獲得字符串,浮動等等。對於空格也可能會變得棘手。 – 2010-10-28 13:51:51

+0

我在正則表達式中犯了一個錯誤,它應該是([^,)(「] \ w *)用於更復雜的字符串。謝謝你的回答,請你解釋一下,請 – Bohdan 2010-10-28 13:54:35

+0

我添加了一個解釋並更改了正則表達式 – Matt 2010-10-28 14:04:22

1

嘗試

mystring.gsub(/([\w.]+)/, '\'\1\'') 

這將取代數字(整數/浮點值)和詞與他們的「引號包圍」的自我,同時保留標點符號(除了點)。

+0

是的,它也可以 – Bohdan 2010-10-28 14:06:33

0

更新:我想你想搜索這

(([^,)("])+) 

而與此

'$1' 

長相取代它的任何東西1次以上,並將其分配給適當的$ 1變量插槽圍繞「\ d」使用括號。替換部分將使用它發現的替代值。