வழக்கமான வெளிப்பாடுகள் (உதாரணங்களுடன்) - 1

"இப்போது நான் உங்களுக்கு வழக்கமான வெளிப்பாடுகளைப் பற்றி சொல்கிறேன். இந்த தலைப்பு ஒரே நேரத்தில் சிக்கலானது மற்றும் எளிமையானது. வழக்கமான வெளிப்பாடுகளை முழுமையாகப் புரிந்துகொள்ள, நீங்கள் இரண்டு அல்லது மூன்று பெரிய புத்தகங்களைப் படிக்க வேண்டியிருக்கும், ஆனால் அவற்றை எவ்வாறு பயன்படுத்துவது என்பதை நான் உங்களுக்குக் கற்பிக்க முடியும். இப்போதே."

"அனுபவம் வாய்ந்த புரோகிராமர்கள் கேலி செய்ய விரும்புவது போல், உங்களுக்கு ஏதேனும் சிக்கல் இருந்தால், வழக்கமான வெளிப்பாடுகளுடன் அதைத் தீர்க்கப் போகிறீர்கள் என்று நினைத்தால், இப்போது உங்களுக்கு இரண்டு சிக்கல்கள் உள்ளன."

"ஹ்ம்ம்."

"நான் உன்னை அதிகம் பயமுறுத்தவில்லை என்று நம்புகிறேன் நண்பரே. இல்லையா?"

"சரி, நல்லது. எனவே, எங்கள் புதிய தலைப்பு வழக்கமான வெளிப்பாடுகள்."

"நாம் அவற்றை மிகைப்படுத்தினால், வழக்கமான வெளிப்பாடுகள் சரங்களுக்கான வடிவங்களாகும்."

" ஒரு சரம் கொடுக்கப்பட்ட வடிவத்துடன் பொருந்துகிறதா என்பதை நீங்கள் சரிபார்க்கலாம் . பிரிப்பான் அல்லது வடிவத்தைப் பயன்படுத்தி ஒரு சரத்தை பகுதிகளாகப் பிரிக்கலாம்."

"ஆனால் எளிமையான ஒன்றைத் தொடங்குவோம்: ஒரு முறை என்ன? "

"SQL இல் (ஆனால் ஜாவாவில் இல்லை), ஒரு சரம் ஒரு குறிப்பிட்ட வடிவத்துடன் பொருந்துகிறதா என்பதை நீங்கள் சரிபார்க்கலாம். இது எப்படி இருக்கிறது:"

name like 'Alex%'

இங்கே பெயர் என்பது ஒரு மாறி, ஒரு பேட்டர்னைச் சரிபார்ப்பதற்கான கட்டளை போன்றது, மேலும் "அலெக்ஸ்%" என்பது பேட்டர்ன் ஆகும்.

இந்த வழக்கில், % என்பது எந்த சரம் அல்லது துணை சரம்.

முறை வடிவத்துடன் பொருந்தும் சரங்கள்
'அலெக்ஸ்%' அலெக்ஸ்
அலெக்ஸ் மற்றும்
அலெக்ஸ் ஆண்டர்
அலெக்ஸ் ஆண்ட்ரா
….
'%எக்ஸ்%' Ma x
Ma x im
Ale x andr
'%a' ஓல்க்
ஹெலன் மற்றும்
ஐஆர்

"SQL இல், வேறு ஒரு எழுத்து மட்டுமே இருக்க வேண்டும் என்று நீங்கள் குறிப்பிட வேண்டும் என்றால், நீங்கள் அடிக்கோடிட்ட எழுத்தைப் பயன்படுத்துவீர்கள்: "_"."

முறை வடிவத்துடன் பொருந்தும் சரங்கள்
'அலெக்ஸ்%_' அலெக்ஸ்
அலெக்ஸ் மற்றும்
அலெக்ஸ் ஆண்டர்
அலெக்ஸ் ஆண்ட்ரா
….
'_எக்ஸ்' Ax
Bx
Cx
'___' ஆஆஆஆஆஆஆஆஆ ...
_
_

"அறிவுபூர்வமாக உள்ளது."

"சரி, வழக்கமான வெளிப்பாடுகளுக்கு செல்லலாம்."

"வழக்கமான வெளிப்பாடுகள் பொதுவாக எழுத்துகளின் எண்ணிக்கையில் மட்டுமின்றி, அவற்றின் 'உள்ளடக்கத்தையும்' உள்ளடக்கும். "எந்த முகமூடியும் பொதுவாக இரண்டு (சில நேரங்களில் மேலும்) பகுதிகளைக் கொண்டிருக்கும்: முதலாவது எழுத்து 'விருப்பங்களை' விவரிக்கிறது, இரண்டாவது எழுத்துகளின் எண்ணிக்கையை விவரிக்கிறது. ."

"இதோ சில உள்ளடக்க எடுத்துக்காட்டுகள்:"

முறை விளக்கம் எடுத்துக்காட்டுகள்
. ஏதேனும் ஒரு பாத்திரம் 1
\d எந்த இலக்கமும் 7
\D எண் அல்லாத ஏதேனும் சி
\s இடைவெளி, வரி முறிவு அல்லது தாவல் எழுத்து ''''
\S இடைவெளிகள், தாவல்கள் மற்றும் வரி முறிவுகளைத் தவிர வேறு எதுவும் இல்லை f
[az] a முதல் z வரையிலான எந்த எழுத்தும் z
[0-9] 0 முதல் 9 வரையிலான எந்த இலக்கமும். 8
\w எந்த வார்த்தை எழுத்து c
\W எந்த வார்த்தை அல்லாத எழுத்து _

"அவற்றை நான் இப்போதே நினைவில் கொள்ள மாட்டேன், ஆனால் அது மிகவும் கடினமாகத் தெரியவில்லை."

"சிறந்தது, முகமூடியில் உள்ள எழுத்துக்களின் எண்ணிக்கைக்கான எடுத்துக்காட்டுகள் இங்கே : "

முறை விளக்கம் எடுத்துக்காட்டுகள்
ஏ? 'ஏ' என்ற எழுத்து ஒருமுறை நிகழ்கிறதோ இல்லையோ
பி+ 'B' எழுத்து ஒன்று அல்லது அதற்கு மேற்பட்ட முறை நிகழ்கிறது பிபிபிபி
C* 'C' எழுத்து பூஜ்ஜியம் அல்லது அதற்கு மேற்பட்ட முறை நிகழ்கிறது CCC
D{n} 'D' எழுத்து n முறை நிகழ்கிறது வடிவ D{4} DDDD உடன் பொருந்துகிறது
E{n,} 'E' எழுத்து n அல்லது அதற்கு மேற்பட்ட முறை நிகழ்கிறது E{2,} வடிவமானது EEEEEEE உடன் பொருந்துகிறது
F{n,m} 'F' எழுத்து n மற்றும் m நேரங்களுக்கு இடையில் நிகழ்கிறது பேட்டர்ன் E{2,4} EEEE உடன் பொருந்துகிறது

"அதெல்லாம் மிகவும் நேரடியானதாகத் தெரிகிறது."

"எல்லாவற்றையும் மிக விரைவாகப் புரிந்துகொள்கிறீர்கள். இப்போது அது எப்படி இருக்கிறது என்று பார்ப்போம்:"

முறை விளக்கம் எடுத்துக்காட்டுகள்
[விளம்பரம்]? 'a' மற்றும் 'd' க்கு இடையில் ஒரு எழுத்து ஒரு முறை அல்லது இல்லவே இல்லை ஏ பி சி டி
[bd,z]+ 'b', 'c', 'd' அல்லது 'z' எழுத்துகள் ஒன்று அல்லது அதற்கு மேற்பட்ட முறை ஏற்படும் b, bcdcdbdbdbdbzzzzbbzbzb, zbz
[1,7-9]* 1, 7, 8 அல்லது 9 என்ற இலக்கங்கள் பூஜ்ஜியம் அல்லது அதற்கு மேற்பட்ட முறை ஏற்படும் 1, 7, 9, 9777, 111199
1{5} இலக்கம் 1 5 முறை நிகழ்கிறது 11111
[1,2,a,b]{2} 1, 2, 'a' அல்லது 'b' குறியீடுகள் இரண்டு முறை நிகழ்கின்றன 11, 12, 1a, ab, 2b, bb, 22
[a,0]{2,3} 'a' அல்லது 0 குறியீடுகள் 2 அல்லது 3 முறை நிகழ்கின்றன aa, a0,00,0a, aaa,000, a00,0a0, a0a

"இன்னும் எல்லாம் தெளிவாக இருக்கிறது."

"அப்படியா? ம்ம்ம். ஒன்று நான் எல்லாவற்றையும் நன்றாக விளக்கினேன் அல்லது நீங்கள் மிக விரைவாக எடுத்துச் செல்கிறீர்கள். சரி, எதுவாக இருந்தாலும், அது எங்களுக்கு நல்லது."

"இதோ உங்களுக்காக இரண்டு புதிய நுண்ணறிவுகள்."

"வழக்கமான வெளிப்பாடுகள் பெரும்பாலும் துணைச்சரங்களைக் கண்டறியப் பயன்படுத்தப்படுவதால், நமது வடிவங்களில் மேலும் இரண்டு எழுத்துகளை (^ மற்றும் $) சேர்க்கலாம்."

"^ என்பது சப்ஸ்ட்ரிங் சரத்தின் தொடக்கத்தை உள்ளடக்கியிருக்க வேண்டும் என்பதாகும்."

"$ என்பது சப்ஸ்ட்ரிங் சரத்தின் முடிவைக் கொண்டிருக்க வேண்டும் என்பதாகும்."

"இங்கே சில உதாரணங்கள்:"

முறை வடிவத்துடன் பொருந்தக்கூடிய சரம் மற்றும் துணைச்சரங்கள்
ஒரு{3} aaa  a  aaa  a  aaa
ஒரு{3}$ aaa a aaa a  aaa
^a{3} aaa  a aaa a aaa
^a{3}$ aaa a aaa a aaa

"மற்றும் ஒரு முக்கியமான புள்ளி."

"வழக்கமான வெளிப்பாடுகளில், பின்வரும் எழுத்துகள் சிறப்புப் பொருளைக் கொண்டுள்ளன: [ ] \ / ^ $ . |

"ஜாவா குறியீட்டில் உள்ளதைப் போல, அவர்கள் தப்பிக்க வேண்டும்." மீண்டும் ஜாவா குறியீட்டைப் போலவே, இதற்கு '\' எழுத்து பயன்படுத்தப்படுகிறது."

"மூன்று அடங்கிய சரத்தை நாம் விவரிக்க விரும்பினால் '?' எழுத்துக்கள், எங்களால் '?{3}' என்று எழுத முடியாது, ஏனெனில் '?' ஒரு கட்டுப்பாட்டு எழுத்து. நாம் இதை இப்படி செய்ய வேண்டும்: \?{3}. நாம் '\' எழுத்தைப் பயன்படுத்த விரும்பினால், '\\' என்று எழுத வேண்டும்."

"கிடைத்தது."

"இப்போது இங்கே மற்றொரு சுவாரசியமான தகவல் உள்ளது. ஜாவா குறியீட்டைக் கொண்ட கோப்புகளில், '\' எழுத்தும் சரங்களில் தவிர்க்கப்பட வேண்டும், ஏனெனில் அது ஒரு கட்டுப்பாட்டு எழுத்து."

"நிச்சயமாக."

"எனவே, நீங்கள் ஒரு ஜாவா வழக்கமான வெளிப்பாட்டை ஒரு சரத்தில் வரையறுக்க முயற்சிக்கிறீர்கள் என்றால், நீங்கள் '\' எழுத்தில் இருந்து இரண்டு முறை தப்பிக்க வேண்டும்."

"இதோ ஒரு உதாரணம்:"

எனக்கு 'c:\anything' உடன் பொருந்தும் முகமூடி வேண்டும்
கோட்பாட்டில், வழக்கமான வெளிப்பாடு இப்படி இருக்க வேண்டும்:
ஒரு 'c' எழுத்து,
பெருங்குடல்,
பின்சாய்வு,
காலம் மற்றும் நட்சத்திரம் (எத்தனை எழுத்துகளையும் குறிக்க). வாசிப்புத்திறனை மேம்படுத்த இடைவெளிகளைச் சேர்த்துள்ளேன்:
c : \ .*
ஆனால் எழுத்துகள் '\' மற்றும் '.' தப்பிக்க வேண்டும், எனவே வழக்கமான வெளிப்பாடு இப்படி இருக்கும்:
c :   \\ \. *
அல்லது, இடைவெளிகள் இல்லாமல்
c: \\ \. *
"நமது வழக்கமான வெளிப்பாட்டில் மூன்று பின்சாய்வுகள் இருக்க வேண்டும்.
அதாவது ஜாவா கோப்பில் வழக்கமான வெளிப்பாடு இப்படி இருக்கும்:"
String regexp = "c: \\\\ \\. *";

"ஆஹா! ஐயோ. இப்போது எனக்குத் தெரியும்."

"நீங்கள் இதை ஆழமாக தோண்ட முடிவு செய்தால், இங்கே இரண்டு நல்ல இணைப்புகள் உள்ளன:"

விக்கிபீடியாவில் பாடம்