Kuwana ese machisi eregex kwagara kuri O(n²) | Mewayz Blog Skip to main content
Hacker News

Kuwana ese machisi eregex kwagara kuri O(n²)

Comments

7 min read Via iev.ee

Mewayz Team

Editorial Team

Hacker News

Mutengo Wakavanzika wePateni Kufananidzwa

Kuvagadziri, matauriro akajairwa (regex) chishandiso chakakosha, banga reSwiss Army rekutara, kusimbisa, uye kutora ruzivo kubva muzvinyorwa. Kubva pakutarisa mafomu eemail kusvika pakukwenya data kubva mumatanda, regex ndiyo yekuenda-kune mhinduro. Nekudaro, pasi peiyi facade ine simba pane musungo wekuita wakatambudza masisitimu kwemakumi emakore: iyo yakaipisisa-nguva yakaoma yekuwana machisi ese mutambo ndeye O(n²). Iyi quadratic time yakaoma inoreva kuti sezvo tambo yekupinda ichikura zvakatevedzana, nguva yekugadzirisa inogona kukura zvakanyanya, zvichiita kuti kusingatarisirwi kuderera, kupera kwezviwanikwa, uye chiitiko chinozivikanwa seReDoS (Regular Expression Denial of Service). Kunzwisisa chidziviso chemukati ichi inhanho yekutanga yekuvaka maapplication akasimba uye anoshanda.

Sei Regex Matching O(n²)? Dambudziko reBacktracking

Mudzi weO(n²) kuomarara uri mumeshini yakawanda yechinyakare regex injini dzinoshandisa: backtracking. Kana injini ye regex, senge iri muPerl, Python, kana Java, ichiedza kutsvaga ese anobvira machisi, haingotarise tambo kamwe chete. Inoongorora nzira dzakasiyana. Funga nezvepatani yakapfava senge `(a+)+b` inoiswa kune tambo kazhinji "a", senge "aaaaaaaaac". Injini inoenderana nemakaro ese "a" neyekutanga `a+`, yobva yaedza kuenderana neyekupedzisira "b". Kana yatadza, inodzokera kumashure- isingaenzanise "a" yekupedzisira uye kuyedza `+` quantifier paboka rekunze. Iyi nzira inodzokororwa, ichimanikidza injini kuti iedze yese inogoneka musanganiswa wekuti ma "a" anogona kuiswa sei mumapoka, zvichitungamira mumubatanidzwa kuputika kwemikana. Nhamba yenzira dzinofanirwa kuongorora injini dzinogona kuenzana neskweya yehurefu hwetambo, saka O(n²).

  • Greedy Quantifiers: Mapeteni akaita se `.*` kana `.+` anopedza mavara akawanda sezvinobvira pakutanga, zvichiita kuti adzore kumashure zvakanyanya kana zvikamu zvinotevera zvepateni zvatadza kuenderana.
  • Nested Quantifiers: Matauriro akaita sekuti `(a+)+` kana `(a*a*)*` anogadzira nhamba huru yenzira dzekutsemura tambo yekupinda, ichiwedzera zvinoshamisa nguva yekugadzirisa.
  • Ambiguous Patterns: Kana tambo ichikwanisa kufananidzwa nenzira dzakawanda dzakapiringana, injini inofanirwa kutarisa mukana wega wega kuti iwane machesi ese.

Iyo Chaiyo-Yepasirese Impact: Kupfuura Kungodzikira

Iyi haisi nyaya yedzidzo chete. Kusashanda regex kunogona kuve nemhedzisiro yakakomba munzvimbo dzekugadzira. Cheki yekusimbisa data inoita seisingakuvadzi inogona kuve bhodhoro kana uchigadzira mafaera makuru kana kubata mavhoriyamu akawanda ekuisa mushandisi. Mhedzisiro ine ngozi ndeye ReDoS kurwiswa, uko mutambi ane hutsinye anopa tambo yakanyatsogadzirwa iyo inokonzeresa kuita kwakaipisisa muwebhu application's regex, kunyatsorembera sevha uye kuita kuti isawanikwe kune vashandisi vari pamutemo. Kumabhizinesi, izvi zvinoshandura zvakananga kunguva yekuderera, kurasikirwa kwemari, uye kukuvadzwa mukurumbira. Kana uchivaka masisitimu akaomarara, kunyanya ayo anogadziridza data risingavimbike, kuziva idzi regex pitfalls chinhu chakakosha chekuchengetedza nekuongorora maitiro.

"Takambova nediki configuration update yakaunza regex kuparadzanisa tambo dzemushandisi-mumiriri. Pasi pemutoro wakajairwa, zvaive zvakanaka. Asi panguva yekufamba kwetraffic, zvakakonzeresa kutadza kudzika kwakatora API yedu kwemaminetsi. Mhosva yaive O(n²) regex yatisina kumboziva kuti tinayo." - A Senior DevOps Engineer

Kuvaka Smarter Systems neMewayz

Saka, tofamba sei kupfuura ichi chinomanikidza? Mhinduro yacho inosanganisira musanganiswa wezvishandiso zviri nani uye sarudzo dzezvivakwa zvine hungwaru. Chekutanga, vagadziri vanogona kushandisa regex analyzer kuona maitiro ane dambudziko voanyora patsva kuti anyatsoshanda (semuenzaniso, kushandisa ma quantifiers kana mapoka emaatomu). Pakuita kwekupedzisira, mamwe maalgorithms aripo anovimbisa mutsara nguva, O(n), yekuenzanisa patani, nyangwe isingawanikwe mumaraibhurari emazuva ose.

Apa ndipo pane modular bhizinesi OS seMewayz inopa mukana wakakura. Mewayz inokutendera iwe kugovera uye kutarisa maitiro akakosha. Panzvimbo pekuve nemonolithic application apo imwe inononoka regex inogona kukanganisa sisitimu yese, unogona kuendesa yakazvitsaurira, yakasarudzika microservice yekuparura data uye kusimbiswa. Kana dambudziko rekuita rikamuka, ririmo uye rinogona kugadziriswa pasina kukanganisa mamwe mashandiro ebhizinesi. Uyezve, maturusi ekuona ari mukati meMewayz papuratifomu anogona kukubatsira kuona kusashanda uku kusati kwakanganisa vatengi vako, kushandura dambudziko ringaite kuita basa rinogoneka rekugadzirisa. Nekuvakira pahwaro hunochinjika uye hunoonekwa, unoita shuwa kuti bhizinesi rako rine pfungwa, kusanganisira yakaoma mameseji kugadzirisa, rinoramba richishanda uye rakatsiga.

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

Mibvunzo Inowanzo bvunzwa

Mutengo Wakavanzika wePateni Kufananidzwa

Kuvagadziri, matauriro akajairwa (regex) chishandiso chakakosha, banga reSwiss Army rekutara, kusimbisa, uye kutora ruzivo kubva muzvinyorwa. Kubva pakutarisa mafomu eemail kusvika pakukwenya data kubva mumatanda, regex ndiyo yekuenda-kune mhinduro. Nekudaro, pasi peiyi facade ine simba pane musungo wekuita wakatambudza masisitimu kwemakumi emakore: iyo yakaipisisa-nguva yakaoma yekuwana machisi ese mutambo ndeye O(n²). Iyi quadratic nguva yakaoma inoreva kuti sezvo tambo yekupinda ichikura zvine mutsetse, iyo nguva yekugadzirisa inogona kukura zvakanyanya, zvichitungamira kukudzikira kusingatarisirwe, kupera simba, uye chiitiko chinozivikanwa seReDoS (Regular Expression Denial of Service). Kunzwisisa chidziviso chemukati ichi inhanho yekutanga yekuvaka maapplication akasimba uye anoshanda.

Sei Regex Matching O(n²)? Dambudziko reBacktracking

Mudzi weO(n²) kuomarara uri mumeshini yakawanda yechinyakare regex injini dzinoshandisa: backtracking. Kana injini ye regex, senge iri muPerl, Python, kana Java, ichiedza kutsvaga ese anobvira machisi, haingotarise tambo kamwe chete. Inoongorora nzira dzakasiyana. Funga nezvepatani yakapfava senge `(a+)+b` inoiswa kune tambo kazhinji "a", senge "aaaaaaaaac". Injini inoenderana nemakaro ese "a" neyekutanga `a+`, yobva yaedza kuenderana neyekupedzisira "b". Kana yatadza, inodzokera kumashure- isingaenzanise "a" yekupedzisira uye kuyedza `+` quantifier paboka rekunze. Iyi nzira inodzokororwa, ichimanikidza injini kuti iedze yese inogoneka musanganiswa wekuti ma "a" anogona kuiswa sei mumapoka, zvichitungamira mumubatanidzwa kuputika kwemikana. Nhamba yenzira dzinofanirwa kuongorora injini dzinogona kuenzana neskweya yehurefu hwetambo, saka O(n²).

Iyo Chaiyo-Yepasirese Impact: Kupfuura Kungodzikira

Iyi haisi nyaya yedzidzo chete. Kusashanda regex kunogona kuve nemhedzisiro yakakomba munzvimbo dzekugadzira. Cheki yekusimbisa data inoita seisingakuvadzi inogona kuve bhodhoro kana uchigadzira mafaera makuru kana kubata mavhoriyamu akawanda ekuisa mushandisi. Mhedzisiro ine ngozi ndeye ReDoS kurwiswa, uko mutambi ane hutsinye anopa tambo yakanyatsogadzirwa iyo inokonzeresa kuita kwakaipisisa muwebhu application's regex, kunyatsorembera sevha uye kuita kuti isawanikwe kune vashandisi vari pamutemo. Kumabhizinesi, izvi zvinoshandura zvakananga kunguva yekuderera, kurasikirwa kwemari, uye kukuvadzwa mukurumbira. Kana uchivaka masisitimu akaomarara, kunyanya ayo anogadziridza data risingavimbike, kuziva idzi regex pitfalls chinhu chakakosha chekuchengetedza nekuongorora maitiro.

Kuvaka Smarter Systems neMewayz

Saka, tofamba sei kupfuura ichi chinomanikidza? Mhinduro yacho inosanganisira musanganiswa wezvishandiso zviri nani uye sarudzo dzezvivakwa zvine hungwaru. Chekutanga, vagadziri vanogona kushandisa regex analyzer kuona maitiro ane dambudziko voanyora patsva kuti anyatsoshanda (semuenzaniso, kushandisa ma quantifiers kana mapoka emaatomu). Pakuita kwekupedzisira, mamwe maalgorithms aripo anovimbisa mutsara nguva, O(n), yekuenzanisa patani, nyangwe isingawanikwe mumaraibhurari emazuva ose.

Vaka Bhizinesi Rako Os Nhasi

Kubva kune vanozvimiririra kuenda kune mamwe masangano, Mewayz inopa masimba 138,000+ mabhizinesi ane 208 integrated modules. Tanga mahara, simudzira kana wakura.

Gadzira Akaundi Yemahara →