Bagaimana saya bisa membuat regex berikut mengabaikan kasus sensitivitas? Itu harus cocok dengan semua karakter yang benar tetapi mengabaikan apakah mereka lebih rendah atau huruf besar.
G[a-b].*
Dengan asumsi anda ingin seluruh regex untuk mengabaikan kasus, anda harus mencari saya
flag. Hampir semua regex dukungan mesin ini:
/G[a-b].*/i
string.match("G[a-b].*", "i")
Periksa dokumentasi untuk bahasa anda/platform/alat untuk menemukan cara yang sesuai mode yang ditentukan.
Jika anda ingin hanya bagian dari regex yang harus case sensitive (seperti asli saya menjawab diduga), maka anda memiliki dua pilihan:
(?i)
dan [opsional] (?-i)
mode pengubah:(?i)Ga-b.*
[gG][a-bA-B].*
Satu catatan terakhir: jika anda're berhadapan dengan karakter Unicode selain ASCII, memeriksa apakah atau tidak anda regex mesin benar mendukung mereka.
Tergantung pada implementasi tapi saya akan menggunakan
(?i)G[a-b].
VARIASI:
(?i) case-insensitive mode ON
(?-i) case-insensitive mode OFF
Modern regex rasa memungkinkan anda untuk menerapkan pengubah hanya bagian dari ekspresi reguler. Jika anda menyisipkan pengubah (?im) di tengah-tengah regex maka pengubah hanya berlaku untuk bagian dari regex ke kanan pengubah. Dengan rasa ini, anda dapat menonaktifkan mode dengan mendahului mereka dengan tanda minus (?-i).
Deskripsi dari halaman tersebut: https://www.regular-expressions.info/modifiers.html
Aku
bendera ini biasanya digunakan untuk kasus ketidakpekaan. Anda don't memberikan sebuah bahasa di sini, tapi itu'mungkin akan menjadi sesuatu seperti /G[ab].*/aku
atau /(?i)G[ab].*/
.
Hanya demi kelengkapan saya ingin menambahkan solusi untuk ekspresi reguler dalam C++ dengan Unicode:
std::tr1::wregex pattern(szPattern, std::tr1::regex_constants::icase);
if (std::tr1::regex_match(szString, pattern))
{
...
}
Seperti yang saya temukan dari ini posting serupa (https://stackoverflow.com/questions/5228892/ignorecase-in-awk/), pada versi lama dari awk (seperti pada vanili Mac OS X), anda mungkin perlu untuk menggunakan 'tolower($0) ~ /pola/'
.
IGNORECASE
atau (?i)
atau /pola/aku
akan menghasilkan kesalahan atau return true untuk setiap baris.
Selain itu sudah diterima jawaban:
Perhatikan bahwa untuk grep ' ing itu hanya penambahan
-imodifier. Ex:
grep -rni regular_expression` untuk pencarian ini 'regular_expression' 'r'ecursively, kasus 'i'nsensitive, menunjukkan garis 'n'an dalam hasil.
Juga, di sini's alat yang hebat untuk memverifikasi ekspresi reguler: https://regex101.com/
Ex: Melihat ekspresi dan Penjelasan dalam gambar ini.
man grep
)