విషయ సూచిక
సాధారణ వ్యక్తీకరణలు దాదాపు ఏదైనా ప్రోగ్రామింగ్ భాషలో చాలా ప్రజాదరణ పొందిన భాగం. మీకు అవసరమైన సమాచారాన్ని త్వరగా యాక్సెస్ చేయడంలో అవి మీకు సహాయపడతాయి. ప్రత్యేకించి, వచనాన్ని ప్రాసెస్ చేయడానికి అవసరమైనప్పుడు అవి ఉపయోగించబడతాయి. పైథాన్ డిఫాల్ట్గా ప్రత్యేక మాడ్యూల్తో వస్తుంది. re, ఇది సాధారణ వ్యక్తీకరణలతో పని చేయడానికి బాధ్యత వహిస్తుంది.
ఈ రోజు మనం సాధారణంగా ఏమిటో, వారితో ఎలా పని చేయాలో మరియు మాడ్యూల్ ఎలా ఉంటుందో వివరంగా మాట్లాడుతాము re సహాయం చేస్తాను.
సాధారణ వ్యక్తీకరణలు: ఒక పరిచయం
సాధారణ వ్యక్తీకరణల ఉపయోగాలు ఏమిటి? దాదాపు అన్ని. ఉదాహరణకు, ఇవి:
- టెక్స్ట్ ధ్రువీకరణ అవసరమయ్యే వెబ్ అప్లికేషన్లు. ఒక సాధారణ ఉదాహరణ ఆన్లైన్ మెయిల్ క్లయింట్లు.
- టెక్స్ట్లు, డేటాబేస్లు మొదలైన వాటికి సంబంధించిన ఏవైనా ఇతర ప్రాజెక్ట్లు.
మేము వాక్యనిర్మాణాన్ని అన్వయించడం ప్రారంభించే ముందు, లైబ్రరీ పనితీరు యొక్క ప్రాథమిక సూత్రాలను మరింత వివరంగా అర్థం చేసుకోవాలి. re మరియు సాధారణంగా, దాని గురించి సాధారణంగా ఏది మంచిది. మేము నిజమైన అభ్యాసం నుండి ఉదాహరణలను కూడా ఇస్తాము, ఇక్కడ మేము వారి ఉపయోగం యొక్క యంత్రాంగాన్ని వివరిస్తాము. మీరు అటువంటి టెంప్లేట్ను సృష్టించవచ్చు, టెక్స్ట్తో అనేక రకాల కార్యకలాపాలను నిర్వహించడానికి మీకు అనుకూలంగా ఉంటుంది.
రీ లైబ్రరీలో టెంప్లేట్ అంటే ఏమిటి?
దానితో, మీరు ఇతర విధులను మరింత అనుకూలీకరించడానికి వివిధ రకాల సమాచారం కోసం శోధించవచ్చు, వాటికి సంబంధించిన సమాచారాన్ని పొందవచ్చు. మరియు, వాస్తవానికి, ఈ డేటాను ప్రాసెస్ చేయడానికి.
ఉదాహరణకు, కింది టెంప్లేట్ తీసుకోండి: s+. ఏదైనా స్పేస్ క్యారెక్టర్ అని అర్థం. మీరు దానికి ప్లస్ గుర్తును జోడిస్తే, నమూనా ఒకటి కంటే ఎక్కువ ఖాళీలను కలిగి ఉందని దీని అర్థం. ఇది కాల్ చేయబడిన ట్యాబ్ అక్షరాలతో కూడా సరిపోలవచ్చు t+.
వాటిని ఉపయోగించే ముందు, మీరు లైబ్రరీని దిగుమతి చేసుకోవాలి Re. ఆ తరువాత, మేము టెంప్లేట్ను కంపైల్ చేయడానికి ప్రత్యేక ఆదేశాన్ని ఉపయోగిస్తాము. ఇది రెండు దశల్లో జరుగుతుంది.
>>> తిరిగి దిగుమతి
>>> regex = re.compile('s+')
ప్రత్యేకంగా, ఈ కోడ్ ఉపయోగించగల టెంప్లేట్ను కంపైల్ చేసే పనిని చేస్తుంది. ఉదాహరణకు, ఖాళీల కోసం శోధించడానికి (ఒకటి లేదా అంతకంటే ఎక్కువ).
సాధారణ వ్యక్తీకరణలను ఉపయోగించి వేర్వేరు స్ట్రింగ్ల నుండి ప్రత్యేక సమాచారాన్ని పొందడం
కింది సమాచారాన్ని కలిగి ఉన్న వేరియబుల్ మన వద్ద ఉందని అనుకుందాం.
>>> టెక్స్ట్ = “””100 INF ఇన్ఫర్మేటిక్స్
213 MAT గణితం
156 ENG ఇంగ్లీష్»»»
ఇందులో మూడు శిక్షణా కోర్సులు ఉన్నాయి. వాటిలో ప్రతి ఒక్కటి మూడు భాగాలను కలిగి ఉంటుంది - సంఖ్య, కోడ్ మరియు పేరు. ఈ పదాల మధ్య విరామం భిన్నంగా ఉన్నట్లు మనం చూస్తాము. ఈ పంక్తిని ప్రత్యేక సంఖ్యలు మరియు పదాలుగా విభజించడానికి ఏమి చేయాలి? ఈ లక్ష్యాన్ని సాధించడానికి రెండు పద్ధతులు ఉన్నాయి:
- ఒక ఫంక్షన్ కాల్ తిరిగి విభజించబడింది.
- ఫంక్షన్ వర్తిస్తాయి స్ప్లిట్ కోసం రెజెక్స్.
మా వేరియబుల్ కోసం ప్రతి పద్ధతి యొక్క వాక్యనిర్మాణాన్ని ఉపయోగించడం ఇక్కడ ఒక ఉదాహరణ.
>>> re.split('s+', text)
# లేదా
>>> regex.split(టెక్స్ట్)
అవుట్పుట్: ['100', 'INF', 'కంప్యూటర్ సైన్స్', '213', 'MAT', 'Math', '156', 'ENG', 'ఇంగ్లీష్']
సాధారణంగా, రెండు పద్ధతులను ఉపయోగించవచ్చు. కానీ ఫంక్షన్ను అనేకసార్లు ఉపయోగించకుండా సాధారణ వ్యక్తీకరణను ఉపయోగించడం నిజానికి చాలా సులభం. తిరిగి విభజించబడింది.
మూడు ఫంక్షన్లతో సరిపోలికలను కనుగొనడం
మనం స్ట్రింగ్ నుండి సంఖ్యలను మాత్రమే సంగ్రహించవలసి ఉందని అనుకుందాం. దీని కోసం ఏమి చేయాలి?
re.findall()
ఫంక్షన్ కోసం ఇక్కడ ఒక ఉపయోగ సందర్భం ఉంది కనుగొను(), ఇది సాధారణ వ్యక్తీకరణలతో కలిపి, టెక్స్ట్ వేరియబుల్ నుండి ఒకటి లేదా అంతకంటే ఎక్కువ సంఖ్యల సంఘటనలను సంగ్రహించడానికి మిమ్మల్ని అనుమతిస్తుంది.
>>> ప్రింట్(టెక్స్ట్)
100 INF ఇన్ఫర్మేటిక్స్
213 MAT గణితం
156 ENG ఇంగ్లీష్
>>> regex_num = re.compile('d+')
>>> regex_num.findall(టెక్స్ట్)
['100', '213', '156']
d గుర్తుతో కలిపి, మేము వేరియబుల్ లేదా టెక్స్ట్లో ఉన్న ఏదైనా సంఖ్యా విలువను ఖచ్చితంగా సూచించే టెంప్లేట్ని ఉపయోగించాము. మరియు మేము అక్కడ ఒకటి + జోడించినందున, కనీసం ఒక సంఖ్య తప్పనిసరిగా ఉండాలి అని దీని అర్థం.
సరిపోలికను కనుగొనడానికి అంకెల ఉనికి అవసరం లేదని పేర్కొనడానికి మీరు * గుర్తును కూడా ఉపయోగించవచ్చు.
కానీ మా విషయంలో, మేము + ఉపయోగించినందున, మేము దానితో సంగ్రహించాము కనుగొను() టెక్స్ట్ నుండి కోర్సుల 1 లేదా అంతకంటే ఎక్కువ డిజిటల్ హోదాలు. అందువలన, మా విషయంలో, సాధారణ వ్యక్తీకరణలు ఫంక్షన్ కోసం సెట్టింగ్లుగా పనిచేస్తాయి.
re.search() vs re.match()
మీరు ఫంక్షన్ల పేరు నుండి ఊహించినట్లుగా, మొదటిది టెక్స్ట్లో సరిపోలిక కోసం శోధిస్తుంది. ప్రశ్న: మధ్య తేడా ఏమిటి కనుగొనాలా? విషయం ఏమిటంటే, ఇది నమూనాకు సరిపోలే నిర్దిష్ట వస్తువును అందిస్తుంది మరియు మునుపటి ఫంక్షన్ వలె జాబితా రూపంలో కనుగొన్న ఫలితాల మొత్తం క్రమాన్ని కాదు.
ప్రతిగా, re.match ఫంక్షన్ అదే చేస్తుంది. వాక్యనిర్మాణం మాత్రమే భిన్నంగా ఉంటుంది. టెంప్లేట్ తప్పనిసరిగా ప్రారంభంలో ఉంచాలి.
దీనిని ప్రదర్శించే ఒక ఉదాహరణ తీసుకుందాం.
>>> # టెక్స్ట్తో వేరియబుల్ని సృష్టించండి
>>> text2 = «»»INF ఇన్ఫర్మేటిక్స్
213 MAT గణితం 156″»»
>>> # regexని కంపైల్ చేయండి మరియు నమూనాల కోసం చూడండి
>>> regex_num = re.compile('d+')
>>> s = regex_num.search(text2)
>>> ప్రింట్('మొదటి సూచిక: ', s.start())
>>> ప్రింట్('చివరి సూచిక: ', s.end())
>>> ప్రింట్(టెక్స్ట్2[s.start():s.end()])
మొదటి సూచిక: 17
చివరి సూచిక: 20
213
మీరు వేరొక విధంగా సారూప్య ఫలితాన్ని పొందాలనుకుంటే, మీరు ఫంక్షన్ను ఉపయోగించవచ్చు సమూహం ().
టెక్స్ట్ యొక్క భాగాన్ని రీ లైబ్రరీతో భర్తీ చేస్తోంది
వచనాన్ని భర్తీ చేయడానికి, ఫంక్షన్ని ఉపయోగించండి re.sub(). మన కోర్సుల జాబితా కొద్దిగా మారిందని అనుకుందాం. ప్రతి డిజిటల్ విలువ తర్వాత మనకు ట్యాబ్ ఉందని మనం చూస్తాము. ఈ క్రమాన్ని ఒక లైన్లో కలపడం మా పని. దీన్ని చేయడానికి, మేము s+ అనే వ్యక్తీకరణను భర్తీ చేయాలి పాస్
అసలు వచనం:
# టెక్స్ట్తో వేరియబుల్ని సృష్టించండి
>>> టెక్స్ట్ = “””100 INF t ఇన్ఫర్మేటిక్స్
213 MAT t మఠం
156 ENG t ఇంగ్లీష్»»»
>>> ప్రింట్(టెక్స్ట్)
100 సమాచారం కంప్యూటర్ సైన్స్
213 MAT గణితం
156 ENG ఇంగ్లీష్
కావలసిన ఆపరేషన్ చేయడానికి, మేము క్రింది కోడ్ లైన్లను ఉపయోగించాము.
# ఒకటి లేదా అంతకంటే ఎక్కువ ఖాళీలను 1తో భర్తీ చేయండి
>>> regex = re.compile('s+')
>>> ప్రింట్(regex.sub(' ', టెక్స్ట్))
ఫలితంగా, మాకు ఒక లైన్ ఉంది.
101 COM కంప్యూటర్లు 205 MAT గణితం 189 ENG ఇంగ్లీష్
ఇప్పుడు మరొక సమస్యను పరిగణించండి. మేము ఖాళీలు పెట్టే పనిని ఎదుర్కోలేదు. అన్ని కోర్సుల పేర్లు కొత్త లైన్లో ప్రారంభం కావడం మాకు చాలా ముఖ్యం. దీన్ని చేయడానికి, మినహాయింపుకు కొత్త లైన్ను జోడించే మరొక వ్యక్తీకరణ ఉపయోగించబడుతుంది. ఇది ఎలాంటి వ్యక్తీకరణ?
గ్రంధాలయం Re ప్రతికూల సరిపోలిక వంటి లక్షణానికి మద్దతు ఇస్తుంది. ఇది స్లాష్కు ముందు ఆశ్చర్యార్థక బిందువును కలిగి ఉన్నందున ఇది నేరుగా నుండి భిన్నంగా ఉంటుంది. అంటే, మనం కొత్త లైన్ అక్షరాన్ని దాటవేయవలసి వస్తే, n బదులుగా !n అని వ్రాయాలి.
మేము ఈ క్రింది కోడ్ను పొందుతాము.
# న్యూలైన్ మినహా అన్ని ఖాళీలను తీసివేయండి
>>> regex = re.compile('(?!n)s+)')
>>> ప్రింట్(regex.sub(' ', టెక్స్ట్))
100 INF ఇన్ఫర్మేటిక్స్
213 MAT గణితం
156 ENG ఇంగ్లీష్
సాధారణ వ్యక్తీకరణ సమూహాలు ఏమిటి?
సాధారణ వ్యక్తీకరణల సమూహాల సహాయంతో, మనకు కావలసిన వస్తువులను ప్రత్యేక మూలకాల రూపంలో పొందవచ్చు మరియు ఒక లైన్లో కాదు.
మేము కోర్సు సంఖ్య, కోడ్ మరియు పేరును ఒక లైన్లో కాకుండా ప్రత్యేక మూలకాలుగా పొందాలని అనుకుందాం. పనిని పూర్తి చేయడానికి, మీరు పెద్ద సంఖ్యలో అనవసరమైన కోడ్ లైన్లను వ్రాయవలసి ఉంటుంది.
వాస్తవానికి, పనిని చాలా సరళీకృతం చేయవచ్చు. మీరు అన్ని ఎంట్రీల కోసం టెంప్లేట్ను కంపైల్ చేయవచ్చు మరియు బ్రాకెట్ల నుండి మీరు పొందవలసిన డేటాను పేర్కొనండి.
చాలా తక్కువ సంఖ్యలో లైన్లు ఉంటాయి.
# కోర్సు టెక్స్ట్ టెంప్లేట్ల సమూహాలను సృష్టించండి మరియు వాటిని సంగ్రహించండి
>>> course_pattern = '([0-9]+)s*([A-ZY]{3})s*([a-zA-ZoY]{4,})'
>>> re.findall(course_pattern, text)
[('100', 'INF', 'కంప్యూటర్ సైన్స్'), ('213', 'MAT', 'Math'), ('156', 'ENG', 'ఇంగ్లీష్')]
"అత్యాశ" సరిపోలే భావన
ప్రామాణికంగా, సాధారణ వ్యక్తీకరణలు మ్యాచింగ్ డేటా యొక్క గరిష్ట మొత్తాన్ని సంగ్రహించడానికి ప్రోగ్రామ్ చేయబడతాయి. మరియు మీకు చాలా తక్కువ అవసరం అయినప్పటికీ.
మనం ట్యాగ్ని పొందాల్సిన నమూనా HTML కోడ్ని చూద్దాం.
>>> text = “గ్రీడీ రెగ్యులర్ ఎక్స్ప్రెషన్ మ్యాచింగ్కి ఉదాహరణ”
>>> re.findall('', text)
['గ్రీడీ రెగ్యులర్ ఎక్స్ప్రెషన్ మ్యాచింగ్ యొక్క ఉదాహరణ']
కేవలం ఒక ట్యాగ్ని సంగ్రహించే బదులు, పైథాన్ మొత్తం స్ట్రింగ్ను పొందింది. అందుకే దీన్ని అత్యాశ అంటారు.
మరియు ట్యాగ్ మాత్రమే పొందడానికి ఏమి చేయాలి? ఈ సందర్భంలో, మీరు సోమరితనం సరిపోలికను ఉపయోగించాలి. అటువంటి వ్యక్తీకరణను పేర్కొనడానికి, నమూనా ముగింపుకు ప్రశ్న గుర్తు జోడించబడుతుంది.
మీరు క్రింది కోడ్ మరియు వ్యాఖ్యాత యొక్క అవుట్పుట్ను పొందుతారు.
>>> re.findall('', text)
[”, ”]
మొదట ఎదుర్కొన్న సంఘటనను మాత్రమే పొందడం అవసరమైతే, అప్పుడు పద్ధతి ఉపయోగించబడుతుంది వెతకండి ().
re.search('', text).group()
"
అప్పుడు ప్రారంభ ట్యాగ్ మాత్రమే కనుగొనబడుతుంది.
జనాదరణ పొందిన వ్యక్తీకరణ టెంప్లేట్లు
అత్యంత సాధారణంగా ఉపయోగించే సాధారణ వ్యక్తీకరణ నమూనాలను కలిగి ఉన్న పట్టిక ఇక్కడ ఉంది.
ముగింపు
సాధారణ వ్యక్తీకరణలతో పనిచేయడానికి మేము చాలా ప్రాథమిక పద్ధతులను మాత్రమే పరిగణించాము. ఏది ఏమైనా, అవి ఎంత ముఖ్యమైనవో మీరు చూశారు. మరియు ఇక్కడ మొత్తం టెక్స్ట్ లేదా దాని వ్యక్తిగత శకలాలు అన్వయించడం అవసరమా, సోషల్ నెట్వర్క్లో పోస్ట్ను విశ్లేషించడం లేదా తరువాత ప్రాసెస్ చేయడానికి డేటాను సేకరించడం అవసరమా అనే దానిపై తేడా లేదు. రెగ్యులర్ వ్యక్తీకరణలు ఈ విషయంలో నమ్మదగిన సహాయకుడు.
అటువంటి పనులను నిర్వహించడానికి అవి మిమ్మల్ని అనుమతిస్తాయి:
- ఇమెయిల్ చిరునామా లేదా ఫోన్ నంబర్ వంటి డేటా ఆకృతిని పేర్కొనడం.
- స్ట్రింగ్ని పొందడం మరియు దానిని అనేక చిన్న తీగలుగా విభజించడం.
- శోధించడం, అవసరమైన సమాచారాన్ని సంగ్రహించడం లేదా అక్షరాల భాగాన్ని భర్తీ చేయడం వంటి టెక్స్ట్తో వివిధ కార్యకలాపాలను నిర్వహించండి.
సాధారణ వ్యక్తీకరణలు అల్పమైన కార్యకలాపాలను నిర్వహించడానికి కూడా మిమ్మల్ని అనుమతిస్తాయి. మొదటి చూపులో, ఈ సైన్స్ మాస్టరింగ్ సులభం కాదు. కానీ ఆచరణలో, ప్రతిదీ ప్రమాణీకరించబడింది, కాబట్టి ఒకసారి దాన్ని గుర్తించడానికి సరిపోతుంది, దాని తర్వాత ఈ సాధనం పైథాన్లో మాత్రమే కాకుండా, ఏ ఇతర ప్రోగ్రామింగ్ భాషలో కూడా ఉపయోగించవచ్చు. డేటా ప్రాసెసింగ్ను ఆటోమేట్ చేయడానికి Excel కూడా సాధారణ వ్యక్తీకరణలను ఉపయోగిస్తుంది. కాబట్టి ఈ సాధనాన్ని ఉపయోగించకపోవడం పాపం.