2011-05-24 72 views
2

如何讓這個正則表達式在Ruby 1.8.7中工作?紅寶石1.8.7 unicode正則表達式問題

regexp = /[^ёЁа-яА-Яa-zA-Zà-üÀ-Ü0-9\.\-\+_]/ 

它應該工作如下

"⟲«Du côté des chars lourds»_123.doc".gsub(regexp, "_"): "__Du_côté_des_chars_lourds__123.doc" 

在紅寶石1.9.2它的工作原理,但不是在紅寶石1.8.7。

+2

爲什麼不直接使用1.9.2? – 2011-05-24 15:41:49

+0

因爲它也是應該可用於Ruby 1.8.7的用戶的寶石。 :) – gucki 2011-05-24 16:14:11

+0

似乎正在使用Rubular,它也使用1.8.7:http://www.rubular.com/r/SnEByiEjQv – Kobi 2011-05-24 16:39:25

回答

4

追加u(Unicode)的修改到你的正則表達式:

regexp = /[^ёЁа-яА-Яa-zA-Zà-üÀ-Ü0-9\.\-\+_]/u 
+0

謝謝,這個作品!你知道我如何使用Regexp.new來傳遞這個選項嗎? Regexp.new('...','u')似乎不起作用。 – gucki 2011-05-25 12:19:47

+0

@gucki,字符編碼修飾符進入第三個參數。試試:'Regexp.new(「...」,無,「u」)'。 – molf 2011-05-25 12:58:06