Saya perlu mengonversi string seperti "/ [\ w \ s] + /" menjadi ekspresi reguler.
"/[\w\s]+/" => /[\w\s]+/
Saya mencoba menggunakan Regexp
metode yang berbeda seperti:
Regexp.new("/[\w\s]+/") => /\/[w ]+\//
, serupa Regexp.compile
dan Regexp.escape
. Tapi tidak satupun dari mereka kembali seperti yang saya harapkan.
Lebih jauh lagi saya mencoba menghapus garis miring terbalik:
Regexp.new("[\w\s]+") => /[w ]+/
Tapi tidak beruntung.
Kemudian saya mencoba melakukannya dengan sederhana:
str = "[\w\s]+"
=> "[w ]+"
Itu lolos. Sekarang bagaimana mungkin string tetap seperti itu dan diubah menjadi objek regexp?
ruby
regex
string
ruby-1.9.3
cmthakur.dll
sumber
sumber
/#{your_regex}/#{options}
.options
adalah Hash, dan Ruby tidak terlalu dinamis =)Metode ini akan dengan aman melepaskan semua karakter dengan arti khusus:
Misalnya,
.
akan di-escape, karena sebaliknya diartikan sebagai 'karakter apa pun'.Ingatlah untuk menggunakan string bertanda kutip tunggal kecuali jika Anda ingin interpolasi string biasa diaktifkan, di mana garis miring terbalik memiliki arti khusus.
sumber
+.
) yang akan ditafsirkan dalam Regexp."\n"
adalah baris baru tetapi'\n'
bukan.Menggunakan% notasi:
atau
Dari bantuan :
sumber
Permata to_regexp dapat melakukan pekerjaan itu.
Anda juga dapat menggunakan pengubah:
sumber