Ịchọta matches regex niile bụ O(n²) | Mewayz Blog Skip to main content
Hacker News

Ịchọta matches regex niile bụ O(n²)

Okwu

10 min read Via iev.ee

Mewayz Team

Editorial Team

Hacker News

Ọnụ ahịa ezoro ezo nke dakọtara ụkpụrụ

Maka ndị mmepe, okwu mgbe niile (regex) bụ ngwa dị mkpa, mma ndị agha Switzerland maka ntule, ịkwado na iwepụta ozi na ederede. Site na ịlele usoro email gaa na-ehichapụ data site na ndekọ, regex bụ ihe aga-eme. Otú ọ dị, n'okpuru facade a dị ike dị n'ọnyà arụmọrụ nke kpagidere usoro ruo ọtụtụ iri afọ: mgbagwoju anya oge kachasị njọ nke ịchọta egwuregwu niile na eriri bụ O (n²). Ihe mgbagwoju anya nke oge anọ a pụtara na ka eriri ntinye na-eto eto n'ahịrị, oge nhazi ahụ nwere ike ịmalite ngwa ngwa, na-eduga na nkwụsịtụ na-atụghị anya ya, ike ọgwụgwụ ihe onwunwe, na ihe a maara dị ka ReDoS(Regular Expression Denial of Service). Ịghọta mmachi nke a bụ nzọụkwụ mbụ iji wulite ngwa ndị siri ike na nke ọma.

Gịnị kpatara Regex Matching O(n²)? Nsogbu nke azụ azụ

Mgbọrọgwụ nke mgbagwoju O(n²) dabere na usoro ọtụtụ igwe regex ọdịnala na-eji: azụ azụ. Mgbe injin regex, dị ka nke dị na Perl, Python, ma ọ bụ Java, na-anwa ịchọta egwuregwu niile enwere ike, ọ naghị enyocha eriri ahụ otu ugboro. Ọ na-enyocha ụzọ dị iche iche. Tụlee ụkpụrụ dị mfe dị ka `(a+)+b` etinyere na eriri nke na-abụkarị "a", dị ka "aaaaaaaaac". Njin ahụ ji anyaukwu dabara na "a"s niile na 'a+' nke mbụ, wee gbalịa ka ọ dakọọ "b" ikpeazụ. Mgbe ọ daa, ọ na-alaghachi azụ — na-ejikọtaghị "a" ikpeazụ wee na-anwale ọnụọgụ '+' na otu mpụta. Usoro a na-emegharị ọzọ, na-amanye engine ka ọ nwalee nchikota ọ bụla nwere ike ime ka "a" nwere ike ịchịkọta, na-eduga na mgbawa nke ohere. Ọnụọgụ ụzọ nke injin ahụ ga-enyocha nwere ike ịdị nhata na square nke ogologo eriri, yabụ O(n²).

  • Anyaukwu Quantifiers: Ụdị dị ka `.*` ma ọ bụ `.+' na-eri ederede dị ka o kwere mee na mbụ, na-eduga n'azụ azụ azụ mgbe akụkụ ndị ọzọ nke ụkpụrụ ahụ adabaghị.
  • Nestifiers Quantifiers: Okwu dị ka `(a+)+` ma ọ bụ `(a*a*)*` na-emepụta ọnụọgụgụ nke ụzọ isi kewaa eriri ntinye, na-abawanye oge nhazi nke ukwuu.
  • Ụkpụrụ dị mgbagwoju anya: Mgbe enwere ike ijikọ eriri n'ụzọ dị iche iche, injin ga-enyocha ohere ọ bụla iji chọta egwuregwu niile.

Mmetụta n'Ezie n'Ụwa: Karịa naanị Slowdowns

Nke a abụghị naanị nchegbu agụmakwụkwọ. Regex na-adịghị arụ ọrụ nwere ike inwe nsonaazụ siri ike na gburugburu mmepụta. Nleba nyocha data nke ọ dị ka ọ nweghị ihe na-adịghị njọ nwere ike ịghọ ihe mgbochi mgbe ị na-ahazi nnukwu faịlụ ma ọ bụ na-ejikwa nnukwu ntinye nke onye ọrụ. Nsonaazụ kachasị dị ize ndụ bụ ọgụ ReDoS, ebe onye na-eme ihe ọjọọ na-enye eriri ejiri nlezianya chepụta nke na-ebute arụmọrụ kachasị njọ na regex ngwa weebụ, kwụgidere sava ahụ nke ọma ma mee ka ọ ghara inweta ndị ọrụ ziri ezi. Maka azụmaahịa, nke a na-atụgharị ozugbo gaa n'oge ọdịda, ego furu efu, yana aha mebiri emebi. Mgbe ị na-ewu usoro mgbagwoju anya, karịsịa ndị na-ahazi data ndị a na-atụkwasịghị obi, ịmara ọnyà regex ndị a bụ akụkụ dị oke mkpa nke nchekwa na nyocha arụmọrụ.

" Anyị nwere mgbe anyị nwere obere nhazi mmelite nke webatara regex iji kpachapụta ụdọ onye ọrụ. N'okpuru ibu nkịtị, ọ dị mma. Ma n'oge ọgba aghara okporo ụzọ, ọ kpatara ọdịda cascading weda API anyị ruo nkeji nkeji. Onye mere mpụ bụ O(n²) regex anyị amaghị na anyị nwere." - Injinia DevOps Senior

Mewayz na-ewu Smarter Systems

Ya mere, kedu ka anyị ga-esi gafere oke mmachi a? Ihe ngwọta na-agụnye ngwakọta nke ngwá ọrụ ka mma na nhọrọ ụkpụrụ ụlọ mara mma. Nke mbụ, ndị mmepe nwere ike iji regex analyzers chọpụta ụkpụrụ nwere nsogbu ma degharịa ha ka ha dị mma (dịka ọmụmaatụ, iji quantifiers nwe ma ọ bụ otu atomic). Maka ịrụ ọrụ kachasị, algọridim ndị ọzọ dị na-ekwe nkwa oge linear, O(n), maka ndakọrịta ụkpụrụ, n'agbanyeghị na ha anaghị adịkarị na ọba akwụkwọ ọkọlọtọ.

Nke a bụ ebe OS azụmahịa modular dị ka Mewayz na-enye nnukwu uru. Mewayz na-enye gị ohere ịmekọrịta na nyochaa usoro dị oke mkpa. Kama inwe ngwa monolithic ebe otu regex dị nwayọ nwere ike mebie sistemu niile, ị nwere ike ibuga microservice raara onwe ya nye maka nyocha na nkwado data. Ọ bụrụ na nsogbu arụmọrụ bilitere, ọ dị n'ime ya ma nwee ike idozi ya na-emetụtaghị ọrụ azụmahịa ndị ọzọ. Ọzọkwa, ngwaọrụ a na-ahụ anya dị n'ime ikpo okwu Mewayz nwere ike inyere gị aka ịkọwapụta adịghị ike ndị a tupu ha emetụta ndị ahịa gị, na-atụgharị nsogbu nwere ike ịbụ ọrụ njikarịcha njikwa. Site n'ịwulite na ntọala na-agbanwe agbanwe na nke a na-ahụ anya, ị na-ahụ na mgbagha azụmahịa gị, gụnyere nhazi ederede dị mgbagwoju anya, na-anọgide na-arụ ọrụ na ike.

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

Ajụjụ a na-ajụkarị

Ọnụ ahịa ezoro ezo nke dakọtara ụkpụrụ

Maka ndị mmepe, okwu mgbe niile (regex) bụ ngwa dị mkpa, mma ndị agha Switzerland maka ntule, ịkwado na iwepụta ozi na ederede. Site na ịlele usoro email gaa na-ehichapụ data site na ndekọ, regex bụ ihe aga-eme. Otú ọ dị, n'okpuru facade a dị ike dị n'ọnyà arụmọrụ nke kpagidere usoro ruo ọtụtụ iri afọ: mgbagwoju anya oge kachasị njọ nke ịchọta egwuregwu niile na eriri bụ O (n²). Ihe mgbagwoju anya nke oge anọ a pụtara na ka eriri ntinye na-eto eto n'ahịrị, oge nhazi nwere ike itolite nke ukwuu, na-eduga na nkwụsịtụ na-atụghị anya ya, ike ọgwụgwụ ihe onwunwe, na ihe a maara dị ka ReDoS (Regular Expression Denial of Service). Ịghọta mmachi nke a bụ nzọụkwụ mbụ iji wulite ngwa ndị siri ike na nke ọma.

Gịnị kpatara Regex Matching O(n²)? Nsogbu nke azụ azụ

Mgbọrọgwụ nke mgbagwoju O(n²) dabere na usoro ọtụtụ igwe regex ọdịnala na-eji: azụ azụ. Mgbe injin regex, dị ka nke dị na Perl, Python, ma ọ bụ Java, na-anwa ịchọta egwuregwu niile enwere ike, ọ naghị enyocha eriri ahụ otu ugboro. Ọ na-enyocha ụzọ dị iche iche. Tụlee ụkpụrụ dị mfe dị ka `(a+)+b` etinyere na eriri nke na-abụkarị "a", dị ka "aaaaaaaaac". Njin ahụ ji anyaukwu dabara na "a"s niile na 'a+' nke mbụ, wee gbalịa ka ọ dakọọ "b" ikpeazụ. Mgbe ọ daa, ọ na-alaghachi azụ — na-ejikọtaghị "a" ikpeazụ wee na-anwale ọnụọgụ '+' na otu mpụta. Usoro a na-emegharị ọzọ, na-amanye engine ka ọ nwalee nchikota ọ bụla nwere ike ime ka "a" nwere ike ịchịkọta, na-eduga na mgbawa nke ohere. Ọnụọgụ ụzọ nke injin ahụ ga-enyocha nwere ike ịdị nhata na square nke ogologo eriri, yabụ O(n²).

Mmetụta n'Ezie n'Ụwa: Karịa naanị Slowdowns

Nke a abụghị naanị nchegbu agụmakwụkwọ. Regex na-adịghị arụ ọrụ nwere ike inwe nsonaazụ siri ike na gburugburu mmepụta. Nleba nyocha data nke ọ dị ka ọ nweghị ihe na-adịghị njọ nwere ike ịghọ ihe mgbochi mgbe ị na-ahazi nnukwu faịlụ ma ọ bụ na-ejikwa nnukwu ntinye nke onye ọrụ. Nsonaazụ kachasị dị ize ndụ bụ ọgụ ReDoS, ebe onye na-eme ihe ọjọọ na-enye eriri ejiri nlezianya chepụta nke na-ebute arụmọrụ kachasị njọ na regex ngwa weebụ, kwụgidere sava ahụ nke ọma ma mee ka ọ ghara inweta ndị ọrụ ziri ezi. Maka azụmaahịa, nke a na-atụgharị ozugbo gaa n'oge ọdịda, ego furu efu, yana aha mebiri emebi. Mgbe ị na-ewu usoro mgbagwoju anya, karịsịa ndị na-ahazi data ndị a na-atụkwasịghị obi, ịmara ọnyà regex ndị a bụ akụkụ dị oke mkpa nke nchekwa na nyocha arụmọrụ.

Mewayz na-ewu Smarter Systems

Ya mere, kedu ka anyị ga-esi gafere oke mmachi a? Ihe ngwọta na-agụnye ngwakọta nke ngwá ọrụ ka mma na nhọrọ ụkpụrụ ụlọ mara mma. Nke mbụ, ndị mmepe nwere ike iji regex analyzers chọpụta ụkpụrụ nwere nsogbu ma degharịa ha ka ha dị mma (dịka ọmụmaatụ, iji quantifiers nwe ma ọ bụ otu atomic). Maka ịrụ ọrụ kachasị, algọridim ndị ọzọ dị na-ekwe nkwa oge linear, O(n), maka ndakọrịta ụkpụrụ, n'agbanyeghị na ha anaghị adịkarị na ọba akwụkwọ ọkọlọtọ.

Mepụta OS azụmahịa gị taa

Site na freelancers gaa na ụlọ ọrụ, Mewayz na-enye ikike azụmahịa 138,000+ nwere modul 208 jikọtara ọnụ. Malite n'efu, kwalite mgbe ị na-etolite.

Mepụta Akaụntụ efu →

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