Saya sudah banyak meneliti ini, tetapi saya masih belum jelas. Apa arti batas kata ? Apa fungsinya?
Jadi, misalnya, bisakah seseorang menjelaskan perintah ini kepada saya?
egrep '\b[A-Z]+\b' filename.sh
Saya sudah banyak meneliti ini, tetapi saya masih belum jelas. Apa arti batas kata ? Apa fungsinya?
Jadi, misalnya, bisakah seseorang menjelaskan perintah ini kepada saya?
egrep '\b[A-Z]+\b' filename.sh
Jawaban:
Seperti dijelaskan di sini , misalnya, itu cocok dengan kata - kata:
Ada tiga posisi berbeda yang memenuhi syarat sebagai batas kata:
- Sebelum karakter pertama dalam string, jika karakter pertama adalah karakter kata.
- Setelah karakter terakhir dalam string, jika karakter terakhir adalah karakter kata.
- Antara dua karakter dalam string, di mana satu adalah karakter kata dan yang lainnya bukan karakter kata.
Berikut adalah contoh dari masing-masing kasus tersebut:
Untuk string foobar, case pertama cocok
foobar
^-----here
Untuk string foobar, case kedua cocok
foobar
^--here
Untuk string foo bar, case ketiga akan cocok
foo bar
^--here, because space is not a word character
Apa yang memenuhi syarat sebagai karakter kata tergantung pada implementasi ekspresi reguler spesifik. Namun dalam semua kasus, huruf ( [a-z]dan [A-Z]), angka ( [0-9]) dan _dianggap sebagai karakter kata.
Jadi, contoh regex yang Anda posting ( \b[A-Z]+\b) berarti menemukan string terpanjang di antara dua batas kata dan yang hanya terdiri dari huruf besar. Mungkin lebih mudah untuk dijelaskan dengan contoh:
echo "FOOBAR" | egrep '\b[A-Z]+\b' # Works
echo "FOO BAR" | egrep '\b[A-Z]+\b' # Works
echo "aFOOBARb" | egrep '\b[A-Z]+\b' # Does not work, we want capitals only
echo "12345" | egrep '\b[A-Za]+\b' # Does not work, no letters
echo "1FOOBAR2" | egrep '\b[A-Z]+\b' # Does not work, 1 and 2 are word chars
echo "_FOOBAR_" | egrep '\b[A-Z]+\b' # Does not work, _ is a word char
echo "#FOOBAR$" | egrep '\b[A-Z]+\b' # Works, # and $ are not word chars
egrep(atau /usr/xpg4/bin/egrep) tidak memperlakukan \bcara ini. Misalnya, echo "FOOBAR" | egrep '\b[A-Z]+\b'tidak akan cocok.
egrep '\b[A-Z]+\b' filename.sh
Mari kita hancurkan:
[A-Z]mewakili salah satu karakter di kelas karakter
[ABCDEFGHIJKLMNOPQRSTUVWXYZ].[A-Z]+mewakili satu atau lebih kemunculan karakter huruf besar. Misalnya pertandingan akan menjadi: A, HELLO, IS, I, ELEPHANT, dll'\bINDIA\b': persis seperti pencarian KATA SELURUH untuk kata INDIAdalam huruf besar. TIDAK akan cocok INDIANA. Dengan demikian menerapkan prinsip yang sama - '\b[A-Z]+\b'akan mencari seluruh kata memiliki satu atau lebih huruf dalam huruf besar.egrep '\b[A-Z]+\b' filename.shakan mencari kata-kata yang memiliki satu atau lebih huruf semua huruf besar dalam file - filename.sh.\b - Persis seperti seluruh pencarian kata.
[azA-Z0-9_]. Periksa manual untukegrep(1), mungkin doumentation untuk ekspresi reguler yang digunakan.