Ku kuma hinkwaswo leswi fambelanaka na regex swi tshama swi ri O(n2) . | Mewayz Blog Skip to main content
Hacker News

Ku kuma hinkwaswo leswi fambelanaka na regex swi tshama swi ri O(n2) .

Mavonelo

11 min read Via iev.ee

Mewayz Team

Editorial Team

Hacker News

Ndleko lowu Fihliweke wa ku Fanisa ka Pateni

Eka vaendli, swivulavulelo swa ntolovelo (regex) i xitirhisiwa lexi nga lavekiki, banga ra Vuthu ra Switzerland ro hlahluva, ku tiyisisa, na ku humesa mahungu eka matsalwa. Ku suka eka ku kambela tifomati ta imeyili ku ya eka ku khwaxa datha ku suka eka tilog, regex i xitshunxo xo ya eka xona. Kambe, ehansi ka facade leyi ya matimba ku na ntlhamu wa matirhelo lowu karhateke tisisiteme ku ringana makume ya malembe: ku rharhangana ka nkarhi wo biha swinene ka ku kuma ku fambelana hinkwako eka ntambhu i O(n2). Ku rharhangana loku ka nkarhi wa quadratic swi vula leswaku loko ntambhu ya input yi kula hi linear, nkarhi wa ku lulamisa wu nga kula hi xihatla, leswi yisaka eka ku nonoka loku nga languteriwangiki, ku karhala ka switirhisiwa, na xiendlakalo lexi tiviwaka tanihi ReDoS (Regular Expression Denial of Service). Ku twisisa xipimelo lexi xa ntumbuluko i goza ro sungula ro aka switirhisiwa leswi tiyeke no tirha kahle.

Ha yini Regex Matching yi ri O(n2)? Xiphiqo xa ku tlhelela endzhaku

Rimitsu ra ku rharhangana ka O(n2) ri le ka endlelo leri tinjhini to tala ta ndhavuko ta regex ti ri tirhisaka: ku tlhelela endzhaku. Loko njhini ya regex, ku fana na leyi nga eka Perl, Python kumbe Java, yi ringeta ku kuma ku fambelana hinkwako loku kotekaka, a yi skeni ntambhu kan’we ntsena. Yi lavisisa tindlela to hambana-hambana. Anakanya hi xivumbeko xo olova xo fana na `(a+)+b` lexi tirhisiweke eka ntambhu ya ngopfu-ngopfu "a"s, ku fana na "aaaaaaaaac". Injhini hi makwanga yi fambisana na ti "a" hinkwato na `a+` yo sungula, ivi yi ringeta ku fambisana na "b" yo hetelela. Loko yi tsandzeka, yi tlhelela endzhaku—yi nga ringani na "a" yo hetelela no ringeta xihlawulekisi xa `+` eka ntlawa wa le handle. Endlelo leri ri phindha-phindha, ri sindzisa njhini ku ringeta ku hlanganisiwa kun'wana na kun'wana loku kotekaka ka ndlela leyi "a"s yi nga hlengeletiwaka ha yona, leswi yisaka eka ku buluka ka combinatorial ka swilo leswi nga kotekaka. Nhlayo ya tindlela leti njhini yi faneleke ku ti lavisisa yi nga ringana na xikwere xa ku leha ka ntambhu, hikokwalaho O(n2).

  • Swihlawulekisi swa Makwanga: Tipheteni to fana na `.*` kumbe `.+` ti dya matsalwa yo tala hilaha swi nga kotekaka hakona eku sunguleni, leswi yisaka eka ku tlhelela endzhaku lokukulu loko swiphemu leswi landzelaka swa xivumbeko swi tsandzeka ku fambelana.
  • Ti-Nested Quantifiers: Swivulavulelo swo fana na `(a+)+` kumbe `(a*a*)*` swi tumbuluxa nhlayo ya xikombiso ya tindlela to avanyisa ntambhu ya le ndzeni, leswi engetelaka swinene nkarhi wo lulamisa.
  • Tipheteni leti nga twisisekiki: Loko ntambhu yi nga fambelanisiwa hi tindlela to tala leti hlanganisaka, njhini yi fanele ku kambela ku koteka kun’wana na kun’wana ku kuma ku fambelana hinkwako.

Nkucetelo Wa Misava Ya Xiviri: Ku Tlula Ku Nonoka Ntsena

Leswi a hi mhaka ya dyondzo ntsena. Regex leyinga tirhiki kahle yingava na switandzhaku swo tika eka tindzhawu ta vuhumelerisi. Ku kamberiwa ka ku tiyisisiwa ka data loku vonakaka ku nga ri na khombo ku nga hundzuka xiphiqo loko ku tirhisiwa tifayela letikulu kumbe ku khoma tivholumo ta le henhla ta ku nghenisa ka mutirhisi. Vuyelo lebyi nga ni khombo swinene i nhlaselo wa ReDoS, laha mutlangi la nga ni khombo a nyikaka ntambhu leyi endliweke hi vukheta leyi hlohlotelaka matirhelo yo biha swinene eka regex ya xitirhisiwa xa webu, hi ndlela leyinene yi hayeka sevha ni ku endla leswaku yi nga kumeki eka vatirhisi lava nga enawini. Eka mabindzu, leswi swi hundzuluxela hi ku kongoma eka nkarhi wo yima, ku lahlekeriwa hi mali leyi nghenaka, na ndhuma leyi onhakeke. Loko ku akiwa tisisiteme to rharhangana, ngopfungopfu leti tirhisaka datha leyi nga tshembiwiki, ku va u lemuka swihinga leswi swa regex i xiphemu xa nkoka xa vuhlayiseki na ku odita matirhelo.

"Hi tshame hi va na mpfuxeto lowuntsongo wa vuhlanganisi lowu ngheniseke regex ku hlahluva tintambhu ta mutirhisi-muyimeri. Ehansi ka ndzhwalo wa ntolovelo, a swi ri kahle. Kambe hi nkarhi wa ku tlakuka ka thrafikhi, swi vange ku tsandzeka ka cascading loku tekeke API ya hina ehansi ku ringana timinete. Mudyohi a ku ri O(n2) regex leyi a hi nga si tshama hi swi tiva leswaku hi na yona." - Muinjhiniyere wa le Henhla wa DevOps

Ku Aka Tisisiteme to Tlhariha hi Mewayz

Kutani, xana hi hundza njhani eka xipimelo lexi xa xisekelo? Ntlhantlho wu katsa ku hlanganisiwa ka switirhisiwa swo antswa na ku hlawula ka vumaki hi vutlhari. Xo sungula, vatumbuluxi va nga tirhisa vaxopaxopi va regex ku kuma swivumbeko leswi nga na swiphiqo no swi tsala nakambe leswaku swi tirha kahle (e.g., ku tirhisa swihlawulekisi swa possessive kumbe mintlawa ya athomo). Eka matirhelo yo hetelela, tialgorithm tin’wana ti kona leti tiyisisaka nkarhi wa linear, O(n), eka ku fambelanisa ka xivumbeko, hambi leswi ti nga tolovelekangiki ngopfu eka tilayiburari ta ntolovelo.

Laha hi laha OS ya bindzu ra modular yo fana na Mewayz yi nyikaka vuyelo lebyikulu. Mewayz yi pfumelela ku hambanyisa hi swiyenge na ku langutisisa maendlelo ya nkoka. Ematshan’wini yo va na xitirhisiwa xa monolithic laha regex yin’we yo nonoka yi nga lema sisiteme hinkwayo, u nga ha tirhisa microservice leyi tinyiketeleke, leyi nga yoxe eka ku hlahluva ka data na ku tiyisisa. Loko ku humelela mhaka ya matirhelo, yi khomiwa naswona yi nga lulamisiwa handle ko khumba matirhelo man’wana ya bindzu. Ku ya emahlweni, switirhisiwa swa ku langutisisa endzeni ka pulatifomo ya Mewayz swi nga ku pfuna ku vona hi ku kongoma ku nga tirhi kahle loku ku nga si khumba vaxavi va wena, ku hundzula xiphiqo lexi nga vaka kona xi va ntirho wo antswisa lowu lawuleka. Hi ku aka eka masungulo lama cinca-cincaka no voniwa, u tiyisisa leswaku loji ya bindzu ra wena, ku katsa na ku lulamisiwa ka matsalwa loku rharhanganeke, yi tshama yi ri leyi tirhaka no tiyisela.

💡 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 →

Swivutiso Leswi Vutisiwaka Nkarhi Na Nkarhi

Ndleko lowu Fihliweke wa ku Fanisa ka Pateni

Eka vaendli, swivulavulelo swa ntolovelo (regex) i xitirhisiwa lexi nga lavekiki, banga ra Vuthu ra Switzerland ro hlahluva, ku tiyisisa, na ku humesa mahungu eka matsalwa. Ku suka eka ku kambela tifomati ta imeyili ku ya eka ku khwaxa datha ku suka eka tilog, regex i xitshunxo xo ya eka xona. Kambe, ehansi ka facade leyi ya matimba ku na ntlhamu wa matirhelo lowu karhateke tisisiteme ku ringana makume ya malembe: ku rharhangana ka nkarhi wo biha swinene ka ku kuma ku fambelana hinkwako eka ntambhu i O(n2). Ku rharhangana loku ka nkarhi wa quadratic swivula leswaku loko ntambhu ya input yikula hi linear, nkarhi wa processing wunga kula hi exponential, leswi yisaka eka ku nonoka lokunga languteriwangiki, ku karhala ka switirhisiwa, na xiendlakalo lexi tivekaka tani hi ReDoS (Regular Expression Denial of Service). Ku twisisa xipimelo lexi xa ntumbuluko i goza ro sungula ro aka switirhisiwa leswi tiyeke no tirha kahle.

Ha yini Regex Matching yi ri O(n2)? Xiphiqo xa ku tlhelela endzhaku

Rimitsu ra ku rharhangana ka O(n2) ri le ka endlelo leri tinjhini to tala ta ndhavuko ta regex ti ri tirhisaka: ku tlhelela endzhaku. Loko njhini ya regex, ku fana na leyi nga eka Perl, Python kumbe Java, yi ringeta ku kuma ku fambelana hinkwako loku kotekaka, a yi skeni ntambhu kan’we ntsena. Yi lavisisa tindlela to hambana-hambana. Anakanya hi xivumbeko xo olova xo fana na `(a+)+b` lexi tirhisiweke eka ntambhu ya ngopfu-ngopfu "a"s, ku fana na "aaaaaaaaac". Injhini hi makwanga yi fambisana na ti "a" hinkwato na `a+` yo sungula, ivi yi ringeta ku fambisana na "b" yo hetelela. Loko yi tsandzeka, yi tlhelela endzhaku—yi nga ringani na "a" yo hetelela no ringeta xihlawulekisi xa `+` eka ntlawa wa le handle. Endlelo leri ri phindha-phindha, ri sindzisa njhini ku ringeta ku hlanganisiwa kun'wana na kun'wana loku kotekaka ka ndlela leyi "a"s yi nga hlengeletiwaka ha yona, leswi yisaka eka ku buluka ka combinatorial ka swilo leswi nga kotekaka. Nhlayo ya tindlela leti njhini yi faneleke ku ti lavisisa yi nga ringana na xikwere xa ku leha ka ntambhu, hikokwalaho O(n2).

Nkucetelo Wa Misava Ya Xiviri: Ku Tlula Ku Nonoka Ntsena

Leswi a hi mhaka ya dyondzo ntsena. Regex leyinga tirhiki kahle yingava na switandzhaku swo tika eka tindzhawu ta vuhumelerisi. Ku kamberiwa ka ku tiyisisiwa ka data loku vonakaka ku nga ri na khombo ku nga hundzuka xiphiqo loko ku tirhisiwa tifayela letikulu kumbe ku khoma tivholumo ta le henhla ta ku nghenisa ka mutirhisi. Vuyelo lebyi nga ni khombo swinene i nhlaselo wa ReDoS, laha mutlangi la nga ni khombo a nyikaka ntambhu leyi endliweke hi vukheta leyi hlohlotelaka matirhelo yo biha swinene eka regex ya xitirhisiwa xa webu, hi ndlela leyinene yi hayeka sevha ni ku endla leswaku yi nga kumeki eka vatirhisi lava nga enawini. Eka mabindzu, leswi swi hundzuluxela hi ku kongoma eka nkarhi wo yima, ku lahlekeriwa hi mali leyi nghenaka, na ndhuma leyi onhakeke. Loko ku akiwa tisisiteme to rharhangana, ngopfungopfu leti tirhisaka datha leyi nga tshembiwiki, ku va u lemuka swihinga leswi swa regex i xiphemu xa nkoka xa vuhlayiseki na ku odita matirhelo.

Ku Aka Tisisiteme to Tlhariha hi Mewayz

Kutani, xana hi hundza njhani eka xipimelo lexi xa xisekelo? Ntlhantlho wu katsa ku hlanganisiwa ka switirhisiwa swo antswa na ku hlawula ka vumaki hi vutlhari. Xo sungula, vatumbuluxi va nga tirhisa vaxopaxopi va regex ku kuma swivumbeko leswi nga na swiphiqo no swi tsala nakambe leswaku swi tirha kahle (e.g., ku tirhisa swihlawulekisi swa possessive kumbe mintlawa ya athomo). Eka matirhelo yo hetelela, tialgorithm tin’wana ti kona leti tiyisisaka nkarhi wa linear, O(n), eka ku fambelanisa ka xivumbeko, hambi leswi ti nga tolovelekangiki ngopfu eka tilayiburari ta ntolovelo.

Aka OS ya Bindzu ra Wena Namuntlha

Ku suka eka va-freelancer ku ya eka tiejensi, Mewayz yi nyika matimba eka 138,000+ wa mabindzu hi 208 wa mimojula leyi hlanganisiweke. Sungula mahala, ndlandlamuxa loko u kula.

Endla akhawunti ya Mahala →
).

Try Mewayz Free

All-in-one platform for CRM, invoicing, projects, HR & more. No credit card required.

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