Clár ábhair
Tá nathanna rialta ina gcuid de bheagnach aon teanga ríomhchlárúcháin. Cabhraíonn siad leat rochtain tapa a fháil ar an bhfaisnéis atá uait. Go háirithe, úsáidtear iad nuair is gá téacs a phróiseáil. Tagann Python le modúl speisialta de réir réamhshocraithe. re, atá freagrach as oibriú le habairtí rialta.
Sa lá atá inniu beimid ag caint go mion faoi cad é i gcoitinne, conas a bheith ag obair leo agus conas an modúl re cabhróidh sé leat.
Nathanna rialta: réamhrá
Cad iad na húsáidí a bhaineann le slonn rialta? Beagnach ar fad. Mar shampla, iad seo:
- Feidhmchláir Ghréasáin a dteastaíonn bailíochtú téacs uathu. Sampla tipiciúil is ea cliaint ríomhphoist ar líne.
- Aon tionscadail eile a bhaineann le téacsanna, bunachair shonraí agus mar sin de.
Sula dtosaímid ar an gcomhréir a pharsáil, ba cheart dúinn na bunphrionsabail a bhaineann le feidhmiú na leabharlainne a thuiscint níos mine re agus go ginearálta, cad atá go maith mar gheall air go ginearálta. Tabharfaimid samplaí freisin ó fhíorchleachtas, áit a ndéanfaimid cur síos ar mheicníocht a n-úsáide. Is féidir leat teimpléad den sórt sin a chruthú, atá oiriúnach duit chun raon leathan oibríochtaí a dhéanamh le téacs.
Cad is teimpléad sa leabharlann Re?
Leis, is féidir leat faisnéis de chineálacha éagsúla a chuardach, faisnéis a fhreagraíonn dóibh a fháil, chun feidhmeanna eile a dhéanamh níos oiriúnaithe. Agus, ar ndóigh, na sonraí seo a phróiseáil.
Mar shampla, tóg an teimpléad seo a leanas: s+. Ciallaíonn sé aon charachtar spáis. Má chuireann tú comhartha móide leis, ciallaíonn sé seo go n-áirítear níos mó ná spás amháin sa phatrún. Is féidir é a mheaitseáil fiú carachtair cluaisín a dtugtar le t+.
Sula n-úsáideann tú iad, ní mór duit an leabharlann a allmhairiú Re. Tar éis sin, úsáidimid ordú speisialta chun an teimpléad a thiomsú. Déantar é seo in dhá chéim.
>>> allmhairiú re
>>> regex = re.compile('s+')
Go sonrach, déanann an cód seo an oibríocht a bhaineann le teimpléad a thiomsú is féidir a úsáid. mar shampla, chun spásanna a chuardach (ceann amháin nó níos mó).
Eolas ar leith a fháil ó teaghráin éagsúla ag baint úsáide as nathanna rialta
Cuir i gcás go bhfuil athróg againn ina bhfuil an fhaisnéis seo a leanas.
>>> text = “””100 INF Faisnéisíocht
213 Matamaitic MAT
156 IR Béarla»»»
Tá trí chúrsa oiliúna ann. Tá trí chuid i ngach ceann acu – uimhir, cód agus ainm. Feicimid go bhfuil an t-eatramh idir na focail seo difriúil. Cad atá le déanamh chun an líne seo a bhriseadh ina huimhreacha agus ina focail ar leith? Tá dhá mhodh ann chun an sprioc seo a bhaint amach:
- glaoigh ar fheidhm scoilt.
- feidhm a chur i bhfeidhm scoilt do regex.
Seo sampla de chomhréir gach ceann de na modhanna dár n-athróg a úsáid.
>>> re.split('s+', téacs)
# nó
>>> regex.split(text)
Aschur: ['100', 'INF', 'Eolaíocht Ríomhaireachta', '213', 'MAT', 'Math', '156', 'ENG', 'Béarla']
Go ginearálta, is féidir an dá mhodh a úsáid. Ach tá sé i bhfad níos éasca i ndáiríre slonn rialta a úsáid seachas an fheidhm a úsáid go minic. scoilt.
Torthaí a aimsiú le trí fheidhm
Ligean le rá nach gá dúinn ach uimhreacha a bhaint as teaghrán. Cad is gá a dhéanamh chuige seo?
athfháil()
Seo cás úsáide don fheidhm aimsitheoir(), a ligeann duit, in éineacht le sloinn rialta, tarluithe d'uimhir amháin nó níos mó a bhaint as athróg téacs.
>>> cló (téacs)
100 Faisnéisíocht INF
213 Matamaitic MAT
156 Béarla
>>> regex_num = re.compile('d+')
>>> regex_num.findall(text)
['100', '213', '156']
In éineacht leis an tsiombail d, d'úsáideamar teimpléad a léiríonn go hiomlán aon luach uimhriúil atá suite in athróg nó i dtéacs. Agus ós rud é gur chuir muid ceann + ann, ciallaíonn sé seo go gcaithfidh uimhir amháin ar a laghad a bheith i láthair.
Is féidir leat an comhartha * a úsáid freisin chun a shonrú nach bhfuil láithreacht digite ag teastáil chun meaitseáil a aimsiú.
Ach inár gcás, ós rud é úsáid againn +, sliocht againn le aimsitheoir() 1 ainmniú digiteach nó níos mó de chúrsaí ón téacs. Mar sin, inár gcás, feidhmíonn nathanna rialta mar shocruithe don fheidhm.
taighde() vs ath.mheaitseáil()
Mar is féidir leat buille faoi thuairim ó ainm na bhfeidhmeanna, cuardaigh an chéad chluiche ar chluiche sa téacs. Ceist: Cad é an difríocht idir aimsi? Is é an pointe go dtugann sé rud ar leith ar ais a thagann leis an bpatrún, agus ní seicheamh iomlán na dtorthaí a fuarthas i bhfoirm liosta, cosúil leis an bhfeidhm roimhe seo.
Ina dhiaidh sin, déanann an fheidhm re.match mar an gcéanna. Níl ach an chomhréir difriúil. Ní mór an teimpléad a chur ag an tús.
Glacaimis sampla a léiríonn seo.
>>> # cruthaigh athróg le téacs
>>> text2 = «»»INF Faisnéisíocht
213 MAT Matamaitic 156″»»
>>> # tiomsaigh regex agus lorg patrúin
>>> regex_num = re.compile('d+')
>>> s = regex_num.search(text2)
>>> print('An chéad innéacs:', s.start())
>>> print('Innéacs deireanach:', s.end())
>>> print(text2[s.start():s.end()])
An chéad innéacs: 17
Innéacs deiridh: 20
213
Más mian leat toradh comhchosúil a fháil ar bhealach difriúil, is féidir leat an fheidhm a úsáid grúpa().
Leabharlann Re a chur in ionad cuid den téacs
Chun téacs a athsholáthar, bain úsáid as an fheidhm ath.sub(). Cuir i gcás go bhfuil athrú beag tagtha ar ár liosta cúrsaí. Feicimid go bhfuil cluaisín againn tar éis gach luach digiteach. Is é an tasc atá againn ná an seicheamh seo go léir a chomhcheangal in aon líne amháin. Chun seo a dhéanamh, ní mór dúinn an slonn s+ a ionadú chun pas a fháil
Ba é an buntéacs ná:
# cruthaigh athróg le téacs
>>> text = “””100 INF t Faisnéisíocht
213 MAT t Math
156 NG t Béarla »» »
>>> cló (téacs)
100 EOLAS Eolaíocht ríomhaireachta
213 MAT Matamaitic
156 GA english
Chun an oibríocht inmhianaithe a dhéanamh, d'úsáideamar na línte cód seo a leanas.
# 1 a chur in ionad spás amháin nó níos mó
>>> regex = re.compile('s+')
>>> print(regex.sub('', téacs))
Mar thoradh air sin, tá líne amháin againn.
101 Ríomhairí COM 205 Matamaitic MAT 189 Eng Béarla
Anois smaoineamh ar fhadhb eile. Níl an cúram orainn spásanna a chur. Tá sé i bhfad níos tábhachtaí dúinne go dtosaíonn gach ainm cúrsa ar líne nua. Chun seo a dhéanamh, úsáidtear slonn eile a chuireann líne nua leis an eisceacht. Cén sórt cainte é seo?
Leabharlann Re tacaíonn sé le gné cosúil le meaitseáil dhiúltach. Tá sé difriúil leis an gceann díreach sa mhéid is go bhfuil pointe exclamation ann roimh an slaise. Is é sin, má theastaíonn uainn an carachtar nualíne a scipeáil, ansin caithfimid !n a scríobh in ionad n.
Faighimid an cód seo a leanas.
# bain gach spás seachas líne nua
>>> regex = re.compile('((?!n)s+)')
>>> print(regex.sub('', téacs))
100 Faisnéisíocht INF
213 Matamaitic MAT
156 Béarla
Cad iad grúpaí cainte rialta?
Le cabhair ó ghrúpaí de nathanna rialta, is féidir linn na rudaí atá ag teastáil a fháil i bhfoirm eilimintí ar leithligh, agus ní i líne amháin.
Cuir i gcás go gcaithfimid uimhir an chúrsa, an cód agus an t-ainm a fháil ní in aon líne amháin, ach mar eilimintí ar leith. Chun an tasc a chomhlánú, beidh ort líon mór línte cód gan ghá a scríobh.
Go deimhin, is féidir an tasc a shimpliú go mór. Is féidir leat an teimpléad a thiomsú do gach iontráil agus na sonraí a theastaíonn uait a fháil ó na lúibíní a shonrú.
Beidh líon an-bheag línte ann.
# cruthaigh grúpaí de theimpléid téacs an chúrsa agus bain amach iad
>>> course_pattern = '([0-9]+)s*([A-ZY]{3})s*([a-zA-ZoY]{4,})'
>>> re.findall(course_pattern, text)
[('100', 'INF', 'Eolaíocht Ríomhaireachta'), ('213', 'MAT', 'Math'), ('156', 'ENG', 'Béarla')]
Coincheap na meaitseála “greedy”.
De réir an chaighdeáin, déantar slonn rialta a ríomhchlárú chun an t-uasmhéid sonraí meaitseála a bhaint as. Agus fiú má theastaíonn uait i bhfad níos lú.
Breathnaímid ar chód HTML samplach nuair is gá dúinn an chlib a fháil.
>>> text = “Sampla de Mheaitseáil Rialta Greedy”
>>> re.findall('', téacs)
['Sampla de Shloinneadh Rialta Greedy']
In ionad ach clib amháin a bhaint amach, fuair Python an teaghrán iomlán. Sin é an fáth a dtugtar greedy air.
Agus cad atá le déanamh chun an chlib amháin a fháil? Sa chás seo, ní mór duit meaitseáil leisciúil a úsáid. Chun slonn den sórt sin a shonrú, cuirtear ceistmharc le deireadh an phatrúin.
Gheobhaidh tú an cód seo a leanas agus aschur an ateangaire.
>>> re.findall('', téacs)
[”, ”]
Má tá sé ag teastáil a fháil ach an chéad a tharla, ansin tá an modh a úsáidtear cuardaigh ().
re.search('', téacs).group()
"
Ansin ní bhfaighidh ach an chlib tosaigh.
Teimpléid Léirithe Coitianta
Seo tábla ina bhfuil na patrúin slonn rialta is coitianta a úsáidtear.
Conclúid
Ní dhearnamar ach na modhanna is bunúsaí chun oibriú le nathanna rialta a mheas. In aon chás, tá tú ag feiceáil cé chomh tábhachtach agus atá siad. Agus anseo ní dhéanann sé aon difríocht cibé an bhfuil sé riachtanach an téacs iomlán nó a chuid blúirí aonair a pharsáil, cibé acu is gá anailís a dhéanamh ar phost ar líonra sóisialta nó sonraí a bhailiú chun é a phróiseáil níos déanaí. Is cúntóir iontaofa iad nathanna rialta san ábhar seo.
Ligeann siad duit tascanna ar nós:
- Ag sonrú formáid na sonraí, mar shampla seoladh ríomhphoist nó uimhir theileafóin.
- Teaghrán a fháil agus é a roinnt ina roinnt teaghráin níos lú.
- Oibríochtaí éagsúla a dhéanamh le téacs, mar shampla cuardach a dhéanamh, an fhaisnéis riachtanach a bhaint amach, nó cuid de na carachtair a athsholáthar.
Ligeann abairtí rialta duit oibríochtaí neamhfhánacha a dhéanamh freisin. Ar an gcéad amharc, níl sé éasca an eolaíocht seo a mháistir. Ach go praiticiúil, tá gach rud caighdeánaithe, agus mar sin is leor é a dhéanamh amach uair amháin, agus ina dhiaidh sin is féidir an uirlis seo a úsáid, ní hamháin i Python, ach freisin in aon teanga cláir eile. Úsáideann fiú Excel nathanna cainte rialta chun próiseáil sonraí a uathoibriú. Mar sin is peaca é gan an uirlis seo a úsáid.