जवाबों:
जैसा कि यहाँ वर्णित है , उदाहरण के लिए, यह शब्दों के बीच मेल खाता है :
शब्द सीमा के रूप में योग्य तीन अलग-अलग पद हैं:
- स्ट्रिंग में पहले चरित्र से पहले, यदि पहला वर्ण एक शब्द चरित्र है।
- स्ट्रिंग में अंतिम वर्ण के बाद, यदि अंतिम वर्ण एक शब्द वर्ण है।
- तार में दो वर्णों के बीच, जहाँ एक शब्द वर्ण है और दूसरा शब्द वर्ण नहीं है।
यहाँ उन मामलों में से प्रत्येक के उदाहरण हैं:
स्ट्रिंग के लिए foobar
, पहला मामला मेल खाता है
foobar
^-----here
स्ट्रिंग के लिए foobar
, दूसरा मामला मेल खाता है
foobar
^--here
स्ट्रिंग के लिए foo bar
, तीसरा मामला मेल खाएगा
foo bar
^--here, because space is not a word character
एक शब्द चरित्र के रूप में क्या योग्यता विशिष्ट नियमित अभिव्यक्ति कार्यान्वयन पर निर्भर करती है। हालांकि, सभी मामलों में, अक्षर ( [a-z]
और [A-Z]
), संख्या ( [0-9]
) और _
शब्द अक्षर माने जाते हैं।
तो, आपके द्वारा पोस्ट किया गया उदाहरण रेगेक्स ( \b[A-Z]+\b
) का अर्थ है सबसे लंबी स्ट्रिंग जो दो शब्द सीमाओं के बीच है और जिसमें केवल ऊपरी अक्षर हैं। उदाहरण द्वारा समझाना आसान हो सकता है:
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
(न ही /usr/xpg4/bin/egrep
) \b
इस तरह से व्यवहार नहीं करता है । उदाहरण के लिए, echo "FOOBAR" | egrep '\b[A-Z]+\b'
मिलान नहीं होगा।
egrep '\b[A-Z]+\b' filename.sh
इसे तोड़ दो:
[A-Z]
चरित्र वर्ग में किसी एक चरित्र का प्रतिनिधित्व करता है
[ABCDEFGHIJKLMNOPQRSTUVWXYZ]
।[A-Z]+
ऊपरी मामले के पात्रों में से एक या अधिक घटना का प्रतिनिधित्व करता है। : उदाहरण मैचों होगा A
, HELLO
, IS
, I
, ELEPHANT
, आदि'\bINDIA\b'
: बिल्कुल INDIA
ऊपरी मामले में एक शब्द की खोज की तरह है । यह मैच नहीं होगा INDIANA
। इस प्रकार एक ही सिद्धांत को लागू '\b[A-Z]+\b'
करना - ऊपरी मामलों में एक या अधिक अक्षरों वाले पूरे शब्दों की तलाश करेगा।egrep '\b[A-Z]+\b' filename.sh
फ़ाइल में ऊपरी मामले में सभी एक या अधिक अक्षरों वाले शब्दों की खोज होगी - filename.sh
।\b
- बिल्कुल एक पूरे शब्द खोज की तरह है।
[azA-Z0-9_]
।egrep(1)
उपयोग में आने वाले नियमित भावों के लिए मैन्युअल रूप से , संभवतः विचलन की जाँच करें।