Bagaimana saya bisa memiliki ekspresi reguler yang menguji spasi atau tab tetapi tidak untuk baris baru. Saya mencoba \s
tetapi ternyata tes untuk baris baru juga.
Saya menggunakan C # / WPF tetapi tidak masalah.
Jawaban:
Gunakan kelas karakter: [ \t]
\t
?
Seperti yang dicatat oleh @ Eiríkr Útlendi, solusi yang diterima hanya mempertimbangkan dua karakter spasi: tab horizontal (U + 0009), dan spasi putus (U + 0020). Itu tidak mempertimbangkan karakter spasi putih lainnya seperti spasi non-breaking (yang kebetulan ada dalam teks yang saya coba tangani). Daftar karakter spasi kosong yang lebih lengkap disertakan di Wikipedia dan juga direferensikan dalam jawaban Perl terkait . Solusi C # sederhana yang memperhitungkan karakter lain ini dapat dibangun menggunakan pengurangan kelas karakter
[\s-[\r\n]]
atau, termasuk solusi Eiríkr Útlendi, Anda mengerti
[\s\u3000-[\r\n]]
Catatan: Untuk mereka yang berurusan dengan teks CJK (Cina, Jepang, dan Korea), spasi double-byte (Unicode \u3000
) tidak disertakan dalam \s
implementasi yang saya coba sejauh ini (Perl, .NET, PCRE, Python). Anda harus menormalkan string Anda terlebih dahulu (seperti mengganti semua \u3000
dengan \u0020
), atau Anda harus menggunakan kumpulan karakter yang menyertakan titik kode ini selain spasi kosong lain yang Anda targetkan, seperti [ \t\u3000]
.
Jika Anda menggunakan Perl atau PCRE, Anda memiliki opsi untuk menggunakan \h
singkatan untuk spasi horizontal , yang tampaknya menyertakan spasi byte tunggal, spasi byte ganda, dan tab, antara lain. Lihat thread Match whitespace tapi bukan newlines (Perl) untuk detail lebih lanjut.
Namun, \h
singkatan ini belum diterapkan untuk .NET dan C #, sebaik yang bisa saya katakan.
\h
(diperkenalkan di Java 8) memang termasuk \u3000
, tetapi \s
tidak, kecuali Anda menyetel mode UNICODE_CHARACTER_CLASS (diperkenalkan di Java 7).
Jika Anda ingin mengganti spasi di bawah kode bekerja untuk saya diC#
Regex.Replace(Line,"\\\s","");
Untuk Tab
Regex.Replace(Line,"\\\s\\\s","");
\h
kelas karakter khusus perl , tetapi ini menunjukkan ada banyak karakter spasi putih lainnya, jika Anda perlu menambahkannya ke daftar di sini.