Adakah cara sederhana untuk mengabaikan spasi dalam string target saat mencari kecocokan menggunakan pola ekspresi reguler? Misalnya, jika penelusuran saya untuk "kucing", saya ingin "c ats" atau "ca ts" untuk mencocokkan. Saya tidak dapat menghapus spasi sebelumnya karena saya perlu menemukan indeks awal dan akhir pertandingan (termasuk spasi apa pun) untuk menyorot kecocokan itu dan spasi apa pun harus ada di sana untuk tujuan pemformatan.
regex
whitespace
Steven
sumber
sumber
^([a-z]\s*)+$
Mengatasi komentar Steven atas jawaban Sam Dufel
Ini harus melakukan trik:
Lihat halaman ini untuk semua variasi berbeda dari 'kucing' yang cocok.
Anda juga bisa menyelesaikan ini menggunakan kondisional , tetapi tidak didukung dalam ragam javascript regex.
sumber
new RegExp('cats'.split('').join('(?:\n\s*)?'))
Meskipun jawaban yang diterima secara teknis benar, pendekatan yang lebih praktis, jika memungkinkan, adalah dengan hanya menghapus spasi dari ekspresi reguler dan string pencarian.
Jika Anda ingin menelusuri "kucing saya", alih-alih:
Kerjakan saja:
Peringatan: Anda tidak dapat mengotomatiskan ini pada ekspresi reguler hanya dengan mengganti semua spasi dengan string kosong karena hal itu dapat terjadi dalam negasi atau membuat ekspresi reguler Anda tidak valid.
sumber
Anda bisa meletakkan
\s*
inbetween setiap karakter dalam string pencarian Anda jadi jika Anda mencari kucing Anda akan menggunakanc\s*a\s*t\s*s\s*s
Itu panjang tapi tentu saja Anda bisa membangun senar secara dinamis.
Anda dapat melihatnya bekerja di sini: http://www.rubular.com/r/zzWwvppSpE
sumber
Jika Anda hanya ingin mengizinkan spasi, maka
harus melakukannya. Untuk juga mengizinkan tab, gunakan
Hapus
\b
jangkar jika Anda juga ingin menemukancats
kata-kata sepertibobcats
ataucatsup
.sumber
Pendekatan ini dapat digunakan untuk mengotomatiskan ini (solusi contoh berikut ini dalam python, meskipun jelas dapat diporting ke bahasa apapun):
Anda dapat menghapus spasi terlebih dahulu DAN menyimpan posisi karakter non spasi sehingga Anda dapat menggunakannya nanti untuk mengetahui posisi batas string yang cocok dalam string asli seperti berikut:
Jika Anda ingin melangkah lebih jauh, Anda dapat membuat objek yang cocok dan mengembalikannya, jadi penggunaan helper ini akan lebih praktis.
Dan kinerja dari fungsi ini tentunya juga dapat dioptimalkan, contoh ini hanya untuk menunjukkan jalan menuju solusi.
sumber