Saya membaca buku tentang ekspresi reguler dan saya menemukan contoh ini untuk \b
:
Kucing itu menyebarkan makanannya ke seluruh ruangan.
Menggunakan regex - \bcat\b
akan cocok dengan kata cat
tetapi tidak cat
dalam scattered
.
Untuk \B
penulis gunakan contoh berikut:
Harap masukkan sembilan digit id seperti itu
muncul di kode sandi warna Anda.
Menggunakan \B-\B
pencocokan ekspresi reguler di -
antara kata tersebut color - coded
. Menggunakan \b-\b
di sisi lain cocok dengan -
in nine-digit
dan pass-key
.
Kenapa di contoh pertama kita gunakan \b
untuk memisahkan cat
dan yang kedua digunakan \B
untuk memisahkan -
? Menggunakan \b
dalam contoh kedua melakukan kebalikan dari apa yang dilakukannya sebelumnya.
Tolong jelaskan perbedaannya kepada saya.
EDIT: Juga, adakah yang bisa menjelaskan dengan contoh baru?
-
tidak dianggap sebagai bagian dari sebuah kata. Demikian pula,!
bukan merupakan bagian dari sebuah kata. Jadi sekali lagi\b!\b
cocok dengan "uunet! Iamold", tetapi tidak cocok dengan "Wow! You are." Anda dapat mencoba hal ini di regexpal.com .\B matches the empty string not at the beginning or end of a word
\b
adalah batas kata dengan lebar nol. Secara khusus:Contoh:
.\b
kecocokanc
dalamabc
\B
adalah batas non-kata dengan lebar nol. Secara khusus:Contoh:
\B.\B
kecocokanb
dalamabc
Lihat regular-expressions.info untuk info regex hebat lainnya
sumber
string.match()
hanya mengembalikan pertandingan pertama, kecuali jika Anda menambahkan bendera globalg
:"abc def".match(/\b./g)
kembali['a', ' ', 'd']
Dengan contoh yang berbeda:
Pertimbangkan ini adalah string dan pola yang akan dicari adalah 'cat':
text = "catmania thiscat thiscatmaina";
Sekarang definisi,
'\ b' menemukan / mencocokkan pola di awal atau akhir setiap kata.
'\ B' tidak menemukan / cocok dengan pola di awal atau akhir setiap kata.
Kasus Berbeda:
Kasus 1: Di awal setiap kata
result = text.replace(/\bcat/g, "ct");
Sekarang, hasilnya adalah "ctmania thiscat thiscatmaina"
Kasus 2: Di akhir setiap kata
result = text.replace(/cat\b/g, "ct");
Sekarang, hasilnya adalah "catmania thisct thiscatmaina"
Kasus 3: Tidak pada awalnya
result = text.replace(/\Bcat/g, "ct");
Sekarang, hasilnya adalah "catmania thisct thisctmaina"
Kasus 4: Tidak pada akhirnya
result = text.replace(/cat\B/g, "ct");
Sekarang, hasilnya adalah "ctmania thiscat thisctmaina"
Kasus 5: Bukan awal maupun akhir
result = text.replace(/\Bcat\B/g, "ct");
Sekarang, hasilnya adalah "catmania thiscat thisctmaina"
Semoga ini membantu :)
sumber
Karakter meta \ b adalah jangkar seperti tanda sisipan dan tanda dolar. Ini cocok pada posisi yang disebut "batas kata". Pertandingan ini panjangnya nol.
Ada tiga posisi berbeda yang memenuhi syarat sebagai batas kata:
\ B adalah versi yang dinegasikan dari \ b . \ B cocok di setiap posisi di mana \ b tidak. Secara efektif, \ B cocok di posisi mana pun di antara dua karakter kata serta di posisi mana pun di antara dua karakter bukan kata.
Sumber: http://www.regular-expressions.info/wordboundaries.html
sumber
\b
cocok dengan batas kata.\B
cocok dengan non-batasan kata, dan setara dengan (terima kasih kepada @Alan Moore atas koreksinya!) . Keduanya[^\b]
(?!\b)
lebar nol.Lihat http://www.regular-expressions.info/wordboundaries.html untuk detailnya. Situs ini sangat berguna untuk banyak pertanyaan regex dasar.
sumber
\B
adalah tidak setara dengan[^\b]
. Kelas karakter ([...]
atau[^...]
) menggunakan tepat satu karakter, sementara pernyataan lebar-nol menyukai\b
dan\B
tidak mengonsumsi apa pun. Jika Anda memasukkan\b
kelas karakter, ini membutuhkan arti yang sama sekali berbeda:[\b]
cocok dengan spasi mundur, dan[^\b]
cocok dengan karakter apa pun kecuali spasi mundur.\B
benar-benar setara dengan(?!\b)
.Biarkan mengambil string seperti:
Catatan: Garis bawah (_) tidak dianggap sebagai karakter khusus dalam kasus ini.
/\bX\b/g
Harus dimulai dan diakhiri dengan karakter khusus atau Spasi putih/\bX/g
Harus dimulai dengan karakter khusus atau Spasi putih/X\b/g
Harus diakhiri dengan karakter khusus atau Spasi putih/\BX\B/g
Tidak boleh dimulai dan tidak diakhiri dengan karakter khusus atau Spasi putih
/\BX/g
Sebaiknya tidak dimulai dengan karakter khusus atau Spasi putih/X\B/g
Tidak boleh diakhiri dengan karakter khusus atau Spasi putih/\bX\B/g
Harus dimulai dan tidak diakhiri dengan karakter khusus atau Spasi putih/\BX\b/g
Tidak boleh dimulai dan harus diakhiri dengan karakter khusus atau Spasi putihsumber
Sumber © Hak Cipta RexEgg.com
Batas Kata: \ b *
Batas kata \ b cocok dengan posisi di mana satu sisi adalah karakter kata (biasanya huruf, angka atau garis bawah — tetapi lihat di bawah untuk variasi di seluruh mesin) dan sisi lainnya bukan karakter kata (misalnya, mungkin merupakan awal dari string atau karakter spasi).
Oleh karena itu, regex \ bcat \ b akan cocok dengan kucing dalam kucing hitam, tetapi tidak akan cocok dengan kucing di catatonic, tomcat, atau sertifikat. Menghapus salah satu batasan, \ bcat akan mencocokkan kucing di lele, dan kucing \ b akan mencocokkan kucing di tomcat, tetapi tidak sebaliknya. Keduanya, tentu saja, akan cocok sendiri dengan kucing.
Bukan-batas-kata: \ B
\ B cocok dengan semua posisi di mana \ b tidak cocok. Oleh karena itu, cocok dengan:
✽ Jika tidak ada sisi yang berupa karakter kata, misalnya pada posisi mana pun dalam string $ = (@ -% ++) (termasuk awal dan akhir string)
✽ Jika kedua sisi merupakan karakter kata, misalnya antara H dan i di Hi!
Ini mungkin tidak terlalu berguna, tetapi terkadang \ B adalah yang Anda inginkan. Misalnya,
✽ \ Bcat \ B akan menemukan cat yang sepenuhnya dikelilingi oleh karakter kata, seperti dalam sertifikat, tetapi tidak sendiri maupun di awal atau akhir kata.
✽ cat \ B akan menemukan kucing baik dalam sertifikat dan lele, tetapi tidak di tomcat atau sendiri.
✽ \ Bcat akan menemukan kucing baik dalam sertifikat dan tomcat, tetapi tidak pada lele atau sendiri.
✽ \ Bcat | cat \ B akan menemukan kucing dalam situasi tertanam, misalnya dalam sertifikat, lele atau kucing jantan, tetapi tidak sendiri.
sumber
\ b digunakan sebagai batas kata
Temukan semua "kucing" di kata di atas
tanpa \ b
dengan \ b
sumber
\B
adalah tidak\b
misalnya negatif\b
pass-key
di sini tidak ada batasan kata di samping-
sehingga cocok\B
dengan contoh pertama anda ada batasan kata disamping cat sehingga cocok\b
aturan serupa juga berlaku untuk orang lain.
\W
negatif dari\w
\UPPER CASE
negatif\LOWER CASE
sumber