సాధారణ వ్యక్తీకరణలు (ఉదాహరణలతో) - 1

"ఇప్పుడు నేను మీకు సాధారణ వ్యక్తీకరణల గురించి చెబుతాను. ఈ అంశం ఒకే సమయంలో సంక్లిష్టమైనది మరియు సరళమైనది. సాధారణ వ్యక్తీకరణలను పూర్తిగా అర్థం చేసుకోవడానికి, మీరు రెండు లేదా మూడు భారీ పుస్తకాలను చదవవలసి ఉంటుంది, కానీ వాటిని ఎలా ఉపయోగించాలో నేను మీకు నేర్పించగలను. ఇప్పుడే."

"అనుభవజ్ఞులైన ప్రోగ్రామర్లు జోక్ చేయడానికి ఇష్టపడతారు, మీకు సమస్య ఉంటే మరియు మీరు సాధారణ వ్యక్తీకరణలతో దాన్ని పరిష్కరించబోతున్నారని అనుకుంటే, ఇప్పుడు మీకు రెండు సమస్యలు ఉన్నాయి."

"హ్మ్."

"నేను నిన్ను పెద్దగా భయపెట్టలేదని ఆశిస్తున్నాను, నా మిత్రమా. కాదా?"

"సరే, బాగుంది. కాబట్టి, మా కొత్త టాపిక్ రెగ్యులర్ ఎక్స్‌ప్రెషన్స్."

"మేము వాటిని అతి సరళీకృతం చేస్తే, సాధారణ వ్యక్తీకరణలు స్ట్రింగ్‌లకు నమూనాలు."

" ఒక స్ట్రింగ్ ఇచ్చిన నమూనాతో సరిపోలుతుందో లేదో మీరు తనిఖీ చేయవచ్చు . మీరు డీలిమిటర్ లేదా నమూనాను ఉపయోగించి స్ట్రింగ్‌ను భాగాలుగా కూడా విభజించవచ్చు."

"అయితే సరళమైన దానితో ప్రారంభిద్దాం: నమూనా అంటే ఏమిటి? "

"SQLలో (కానీ జావాలో కాదు), మీరు స్ట్రింగ్ నిర్దిష్ట నమూనాతో సరిపోలుతుందో లేదో తనిఖీ చేయవచ్చు. ఇది ఇలా కనిపిస్తుంది:"

name like 'Alex%'

ఇక్కడ పేరు ఒక వేరియబుల్, నమూనాను తనిఖీ చేయడానికి ఒక ఆదేశం వలె ఉంటుంది మరియు "Alex%" అనేది నమూనా.

ఈ సందర్భంలో, % అంటే ఏదైనా స్ట్రింగ్ లేదా సబ్‌స్ట్రింగ్.

నమూనా నమూనాకు సరిపోలే తీగలు
'అలెక్స్%' అలెక్స్
అలెక్స్ మరియు
అలెక్స్ ఆండర్
అలెక్స్ ఆండ్రా
….
'%x%' Ma x
Ma x im
Ale x andr
...
'%a' ఓల్గ్
హెలెన్ మరియు
ఇఆర్

"SQLలో, మీరు మరొక అక్షరం మాత్రమే ఉండాలని పేర్కొనవలసి వస్తే, మీరు అండర్ స్కోర్ అక్షరాన్ని ఉపయోగిస్తారు: "_"."

నమూనా నమూనాకు సరిపోలే తీగలు
'అలెక్స్%_' అలెక్స్
అలెక్స్ మరియు
అలెక్స్ ఆండర్
అలెక్స్ ఆండ్రా
….
'_x' Ax
Bx
Cx
'___' ఆఆబ్
బ్బ ...
_

"ఇది అర్థవంతంగా ఉంది."

"సరే, అప్పుడు సాధారణ వ్యక్తీకరణలకు వెళ్దాం."

"సాధారణ వ్యక్తీకరణలు సాధారణంగా అక్షరాల సంఖ్యపై మాత్రమే కాకుండా వాటి 'కంటెంట్'పై కూడా పరిమితిని కలిగి ఉంటాయి. "ఏదైనా ముసుగు సాధారణంగా రెండు (కొన్నిసార్లు ఎక్కువ) భాగాలను కలిగి ఉంటుంది: మొదటిది అక్షర 'ప్రాధాన్యతలను' వివరిస్తుంది మరియు రెండవది అక్షరాల సంఖ్యను వివరిస్తుంది. ."

"ఇక్కడ కొన్ని కంటెంట్ ఉదాహరణలు ఉన్నాయి:"

నమూనా వివరణ ఉదాహరణలు
. ఏదైనా ఒక పాత్ర 1
\d ఏదైనా అంకె 7
\D ఏదైనా నాన్-డిజిట్ సి
\s స్పేస్, లైన్ బ్రేక్ లేదా ట్యాబ్ క్యారెక్టర్ ''
\S ఖాళీలు, ట్యాబ్‌లు మరియు లైన్ బ్రేక్‌లు మినహా ఏదైనా f
[az] a నుండి z వరకు ఏదైనా అక్షరం z
[0-9] 0 నుండి 9 వరకు ఏదైనా అంకె. 8
\w ఏదైనా పదం పాత్ర సి
\W ఏదైనా పదం కాని అక్షరం _

"నేను వాటిని వెంటనే గుర్తుంచుకోను, కానీ అది చాలా కష్టంగా కనిపించడం లేదు."

"అద్భుతమైనది, మాస్క్‌లోని అక్షరాల సంఖ్యకు ఉదాహరణలు ఇక్కడ ఉన్నాయి : "

నమూనా వివరణ ఉదాహరణలు
ఎ? 'A' అనే అక్షరం ఒకసారి వస్తుంది లేదా అస్సలు కాదు
B+ 'B' అక్షరం ఒకటి లేదా అంతకంటే ఎక్కువ సార్లు వస్తుంది BBBB
సి* '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:\ ఏదైనా' సరిపోలే మాస్క్ కావాలి
సిద్ధాంతంలో, సాధారణ వ్యక్తీకరణ ఇలా ఉండాలి:
ఒక 'c' అక్షరం,
పెద్దప్రేగు,
బ్యాక్‌స్లాష్,
కాలం మరియు నక్షత్రం (అక్షరాల సంఖ్యను సూచించడానికి). నేను రీడబిలిటీని మెరుగుపరచడానికి ఖాళీలను జోడించాను:
c : \ .*
కానీ అక్షరాలు '\' మరియు '.' తప్పించుకోవాలి, కాబట్టి సాధారణ వ్యక్తీకరణ ఇలా కనిపిస్తుంది:
c :   \\ \. *
లేదా, ఖాళీలు లేకుండా
c: \\ \. *
"మన రెగ్యులర్ ఎక్స్‌ప్రెషన్‌లో మూడు బ్యాక్‌స్లాష్‌లు ఉండాలి.
అంటే జావా ఫైల్‌లో రెగ్యులర్ ఎక్స్‌ప్రెషన్ ఇలా కనిపిస్తుంది:"
String regexp = "c: \\\\ \\. *";

"వావ్! అయ్యో. ఇప్పుడు నాకు తెలుసు."

"మరియు మీరు దీన్ని లోతుగా తీయాలని నిర్ణయించుకుంటే, ఇక్కడ కొన్ని మంచి లింక్‌లు ఉన్నాయి:"

వికీపీడియాలో పాఠం