Kubona imikino yose ya regex yamye ari O (n²) | Mewayz Blog Skip to main content
Hacker News

Kubona imikino yose ya regex yamye ari O (n²)

Ibitekerezo

5 min read Via iev.ee

Mewayz Team

Editorial Team

Hacker News

Igiciro Cyihishe cyo Guhuza Ibishushanyo

Kubateza imbere, imvugo isanzwe (regex) nigikoresho cyingirakamaro, icyuma cyingabo zu Busuwisi cyo gusesengura, kwemeza, no gukura amakuru mumyandiko. Kuva kugenzura imiterere ya imeri kugeza gusiba amakuru kuva mubiti, regex niyo nzira yo gukemura. Nyamara, munsi yuru ruganda rukomeye hari umutego wimikorere yibasiye sisitemu mumyaka mirongo: ibihe bibi cyane-bigoye cyane kubona ibisubizo byose mumurongo ni O (n²). Iyi quadratic time complexe isobanura ko nkuko umugozi winjiza ukura kumurongo, igihe cyo gutunganya gishobora gukura cyane, biganisha ku gutinda gutunguranye, kunanirwa kwumutungo, hamwe nikintu kizwi nka ReDoS (Guhora ugaragaza serivisi). Gusobanukirwa n'iyi mbogamizi ni intambwe yambere iganisha ku kubaka porogaramu zikomeye kandi zinoze.

Kuki Regex ihuye O (n²)? Ikibazo cyo Gusubira inyuma

Imizi ya O (n²) igoye iri muburyo bwa moteri gakondo ya regex ikoresha: gusubira inyuma. Iyo moteri ya regex, nkiyi yo muri Perl, Python, cyangwa Java, igerageza gushakisha ibishoboka byose, ntabwo isikana umugozi rimwe gusa. Irashakisha inzira zitandukanye. Reba uburyo bworoshye nka `(a +) + b` bwakoreshejwe kumurongo wa" a "s, nka" aaaaaaaaac ". Moteri irarikira ihuza "a" zose hamwe na `a +` yambere, hanyuma igerageza guhuza "b" yanyuma. Iyo binaniwe, isubira inyuma-idahuye "a" iheruka kandi igerageza `+` igereranya kumatsinda yo hanze. Iyi nzira irasubiramo, guhatira moteri kugerageza ibishoboka byose byerekana uburyo "a" ishobora guhurizwa hamwe, biganisha ku guturika kwa ibishoboka. Umubare winzira moteri igomba gushakisha irashobora kugereranwa na kare ya kare yuburebure bwumugozi, bityo O (n²).

  • Umubare wuzuye umururumba: Ibishushanyo nka `. *` Cyangwa `.
  • Ibishushanyo bidasobanutse: Iyo umugozi ushobora guhuzwa muburyo bwinshi, moteri igomba kugenzura ibishoboka byose kugirango ibone imikino yose.

Ingaruka Yukuri-Isi: Kurenza Gutinda gusa

Ibi ntabwo ari impungenge zamasomo gusa. Regex idakora neza irashobora kugira ingaruka zikomeye mubidukikije. Igenzura risa nkaho ritagira ingaruka kugenzura rishobora guhinduka icyuho mugihe utunganya amadosiye manini cyangwa ukoresha umubare munini wabakoresha. Ingaruka ziteye akaga cyane ni igitero cya ReDoS, aho umukinnyi mubi atanga umugozi wakozwe neza witonze utera imikorere mibi cyane muri regex ya porogaramu y'urubuga, kumanika neza seriveri kandi bigatuma itaboneka kubakoresha byemewe. Kubucuruzi, ibi bisobanurwa neza mugihe cyo hasi, gutakaza amafaranga, no kwangirika kwizina. Iyo wubaka sisitemu igoye, cyane cyane itunganya amakuru atizewe, kumenya iyi mitego ya regex nikintu gikomeye cyumutekano no kugenzura imikorere.

> - Umu injeniyeri mukuru wa DevOps

Kubaka sisitemu nziza hamwe na Mewayz

Noneho, nigute dushobora kurenga iyi mbogamizi yibanze? Igisubizo kirimo guhuza ibikoresho byiza hamwe nubwenge bwububiko bwiza. Ubwa mbere, abitezimbere barashobora gukoresha abasesengura regex kugirango bamenye imiterere iteye ikibazo kandi bayandike kugirango barusheho gukora neza (urugero, ukoresheje ibipimo bifatika cyangwa amatsinda ya atome). Kubikorwa byanyuma, ubundi algorithm ibaho yemeza ko umurongo ugereranije, O (n), kubishushanyo bihuye, nubwo bitamenyerewe mubitabo bisanzwe.

Aha niho ubucuruzi bwubucuruzi bwa OS nka Mewayz butanga inyungu zingenzi. Mewayz igufasha kugabana no gukurikirana inzira zikomeye. Aho kugira monolithic progaramu aho regex imwe itinda ishobora kumugara sisitemu yose, urashobora kohereza microservice yabigenewe, yitaruye kugirango ibashe gusesengura no kwemeza. Niba ikibazo cyimikorere kivutse, kirimo kandi gishobora gukemurwa bitagize ingaruka kubindi bikorwa byubucuruzi. Byongeye kandi, ibikoresho byo kwitegereza muri platform ya Mewayz birashobora kugufasha kwerekana izo mikorere mbere yuko bigira ingaruka kubakiriya bawe, bigahindura ikibazo gishobora kuba igikorwa cyiza cyo gukora neza. Kubaka ku musingi woroshye kandi ugaragara, uremeza ko logique yawe yubucuruzi, harimo gutunganya inyandiko igoye, ikomeza gukora kandi ikomera.

💡 DID YOU KNOW?

Mewayz replaces 8+ business tools in one platform

CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.

Start Free →

Ibibazo bikunze kubazwa

Igiciro Cyihishe cyo Guhuza Ibishushanyo

Kubateza imbere, imvugo isanzwe (regex) nigikoresho cyingirakamaro, icyuma cyingabo zu Busuwisi cyo gusesengura, kwemeza, no gukura amakuru mumyandiko. Kuva kugenzura imiterere ya imeri kugeza gusiba amakuru kuva mubiti, regex niyo nzira yo gukemura. Nyamara, munsi yuru ruganda rukomeye hari umutego wimikorere yibasiye sisitemu mumyaka mirongo: ibihe bibi cyane-bigoye cyane kubona ibisubizo byose mumurongo ni O (n²). Iki gihe cya quadratic complexe bivuze ko nkuko umugozi winjiza ukura kumurongo, igihe cyo gutunganya gishobora gukura cyane, biganisha ku gutinda gutunguranye, kunanirwa kwumutungo, hamwe nikintu kizwi nka ReDoS (Guhora ugaragaza serivisi). Gusobanukirwa n'iyi mbogamizi ni intambwe yambere iganisha ku kubaka porogaramu zikomeye kandi zinoze.

Kuki Regex Ihuza O (n²)? Ikibazo cyo Gusubira inyuma

Imizi ya O (n²) igoye iri muburyo bwa moteri gakondo ya regex ikoresha: gusubira inyuma. Iyo moteri ya regex, nkiyi yo muri Perl, Python, cyangwa Java, igerageza gushakisha ibishoboka byose, ntabwo isikana umugozi rimwe gusa. Irashakisha inzira zitandukanye. Reba uburyo bworoshye nka `(a +) + b` bwakoreshejwe kumurongo wa" a "s, nka" aaaaaaaaac ". Moteri irarikira ihuza "a" zose hamwe na `a +` yambere, hanyuma igerageza guhuza "b" yanyuma. Iyo binaniwe, isubira inyuma-idahuye "a" iheruka kandi igerageza `+` igereranya kumatsinda yo hanze. Iyi nzira irasubiramo, guhatira moteri kugerageza ibishoboka byose byerekana uburyo "a" ishobora guhurizwa hamwe, biganisha ku guturika kwa ibishoboka. Umubare winzira moteri igomba gushakisha irashobora kugereranwa na kare ya kare yuburebure bwumugozi, bityo O (n²).

Ingaruka Yukuri-Isi: Kurenza Gutinda gusa

Ibi ntabwo ari impungenge zamasomo gusa. Regex idakora neza irashobora kugira ingaruka zikomeye mubidukikije. Igenzura risa nkaho ritagira ingaruka kugenzura rishobora guhinduka icyuho mugihe utunganya amadosiye manini cyangwa ukoresha umubare munini wabakoresha. Ingaruka ziteye akaga cyane ni igitero cya ReDoS, aho umukinnyi mubi atanga umugozi wakozwe neza witonze utera imikorere mibi cyane muri regex ya porogaramu y'urubuga, kumanika neza seriveri kandi bigatuma itaboneka kubakoresha byemewe. Kubucuruzi, ibi bisobanurwa neza mugihe cyo hasi, gutakaza amafaranga, no kwangirika kwizina. Iyo wubaka sisitemu igoye, cyane cyane itunganya amakuru atizewe, kumenya iyi mitego ya regex nikintu gikomeye cyumutekano no kugenzura imikorere.

Kubaka sisitemu nziza hamwe na Mewayz

Noneho, nigute dushobora kurenga iyi mbogamizi yibanze? Igisubizo kirimo guhuza ibikoresho byiza hamwe nubwenge bwububiko bwiza. Ubwa mbere, abitezimbere barashobora gukoresha abasesengura regex kugirango bamenye imiterere iteye ikibazo kandi bayandike kugirango barusheho gukora neza (urugero, ukoresheje ibipimo bifatika cyangwa amatsinda ya atome). Kubikorwa byanyuma, ubundi algorithm ibaho yemeza ko umurongo ugereranije, O (n), kubishushanyo bihuye, nubwo bitamenyerewe mubitabo bisanzwe.

Kubaka OS yawe Yubucuruzi Uyu munsi

Kuva kubaterankunga kugeza ibigo, Mewayz iha imbaraga 138.000+ ubucuruzi hamwe na 208 ihuriweho. Tangira ubuntu, uzamure iyo ukuze.

{"@context": "https://schema.org", "@type": "Ingingo", "umutwe": "Gushaka imikino yose ya regex yamye ari O (n²) "," url ":" https: // mewayz.com 0 "," umwanditsi ": {" @type ":" Organisation "," izina ":" Mewayz "," url ":" https://mewayz.shop "}," uwatangaje ": {"

Start managing your business smarter today

Join 6,208+ businesses. Free forever plan · No credit card required.

Ready to put this into practice?

Join 6,208+ businesses using Mewayz. Free forever plan — no credit card required.

Start Free Trial →

Ready to take action?

Start your free Mewayz trial today

All-in-one business platform. No credit card required.

Start Free →

14-day free trial · No credit card · Cancel anytime