Di Java, saat melakukan replaceAll untuk mencari pola regex seperti:
replaceAll("\\?i\\b(\\w+)\\b(\\s+\\1)+\\b", "$1");
(untuk menghapus duplikat kata-kata yang tidak peka huruf besar / kecil, misalnya Tes tes), saya tidak yakin di mana saya meletakkan ?i
. Saya membaca bahwa itu seharusnya di awal, tetapi jika saya mengeluarkannya maka saya menangkap kata-kata duplikat berturut-turut (misalnya tes tes), tetapi bukan kata-kata yang tidak peka huruf besar / kecil (misalnya Tes tes). Jadi saya pikir saya bisa menambahkan? Saya di awal tetapi tampaknya tidak menyelesaikan pekerjaan. Ada pemikiran? Terima kasih!
java
regex
case-sensitive
Kristal
sumber
sumber
Jawaban:
RegexBuddy memberi tahu saya jika Anda ingin memasukkannya di awal, ini adalah sintaks yang benar:
sumber
Anda juga dapat mencocokkan regex yang tidak peka huruf besar / kecil dan membuatnya lebih mudah dibaca dengan menggunakan konstanta Pattern.CASE_INSENSITIVE seperti:
sumber
Pattern.compile(myregex, Pattern.MULTILINE | Pattern.CASE_INSENSITIVE)
(?i)
,Ya, ketidakpekaan huruf besar / kecil dapat diaktifkan dan dinonaktifkan sesuka hati di regex Java.
Sepertinya Anda menginginkan yang seperti ini:
Perhatikan bahwa bendera yang disematkan tidak . Perhatikan juga yang satu itu berlebihan
Pattern.CASE_INSENSITIVE
(?i)
\?i
\b
telah dihilangkan dari pola.Itu
(?i)
ditempatkan di awal pola untuk mengaktifkan case-insensitivity. Dalam kasus khusus ini, itu tidak akan diganti nanti dalam pola, jadi pada dasarnya seluruh pola peka huruf besar kecil.Perlu dicatat bahwa sebenarnya Anda dapat membatasi ketidakpekaan huruf besar / kecil hanya pada sebagian dari keseluruhan pola. Jadi, pertanyaan di mana harus meletakkannya sangat tergantung pada spesifikasinya (meskipun untuk masalah khusus ini sejak itu tidak menjadi masalah
\w
tidak peka huruf besar / kecil.Untuk mendemonstrasikan, berikut adalah contoh serupa dari runtuhnya rangkaian huruf like
"AaAaaA"
to just"A"
.Sekarang misalkan kita menetapkan bahwa proses hanya boleh diciutkan hanya jika dimulai dengan huruf besar. Kemudian kita harus meletakkannya
(?i)
di tempat yang sesuai:Secara lebih umum, Anda dapat mengaktifkan dan menonaktifkan flag apa pun di dalam pola sesuai keinginan.
Lihat juga
java.util.regex.Pattern
/regex/i
(Pattern.CASE_INSENSITIVE
di Java), Anda bisa melakukannya/(?i)regex/
/first(?i)second(?-i)third/
/first(?i:second)third/
\b
antara a\w
dan a\s
)Pertanyaan-pertanyaan Terkait
sumber
Jika seluruh ekspresi Anda tidak membedakan huruf besar / kecil, Anda cukup menentukan
CASE_INSENSITIVE
panji:sumber
Anda juga dapat mengarahkan string awal Anda, yang akan Anda periksa kecocokan pola, ke huruf kecil. Dan gunakan dalam pola simbol huruf kecil Anda masing-masing.
sumber