Di Vim, kelas karakter \s
cocok dengan karakter spasi apa pun. Ketika saya menggunakan karakter khusus dalam grup misalnya [\s\w]
tidak cocok dengan spasi tunggal atau karakter kata, itu cocok s
atau w
.
Bagaimana cara menggunakan kelas karakter di dalam grup?
regular-expression
John HK
sumber
sumber
[[:space:][:alnum:]_]
dapat digunakan untuk memperkirakan koleksi\s
dan\w
, meskipun.Jawaban:
Itu bukan grup, ini rentang, dan di Vim Anda tidak bisa menggunakan kelas karakter (walaupun itu mungkin di implementasi regex lainnya, misalnya dalam python ). Anda harus menggunakan alternatif sebagai gantinya:
atau:
(atau, solusi yang diusulkan oleh Peter Lewerin ).
sumber
\s
di kelas karakter. Implementasi regex Vim kebetulan telah membuat pilihan itu, tetapi implementasi lain memungkinkan Anda untuk menggunakannya[\s]
.Tidak seperti beberapa implementasi mesin ekspresi reguler, Vim's tampaknya tidak mendukung notasi itu (
[\s\w]
) dalam koleksi. Seseorang dapat menggunakan ekspresi kelas karakter POSIX .[:blank:]
sama dengan\s
.[:space:]
cocok dengan jumlah karakter spasi yang lebih besar daripada\s
, dan tampaknya setara dengan\_s
.[:alnum:]
mendekati\w
, tetapi tidak cocok dengan garis bawah (_
).Jadi koleksi yang Anda inginkan dapat ditulis sebagai
[[:blank:][:alnum:]_]
atau[[:space:][:alnum:]_]
.Saya belum diverifikasi ini dengan menguji, tetapi didokumentasikan dalam
:h regexp
,:h /character-classes
dan:h /collection
.Catatan Portabilitas: Pada mesin regex lainnya,
\s
biasanya sama dengan[:space:]
(atau\_s
) di Vim.sumber