Ko te kimi i nga taurite regex katoa he O(n²)
Nga korero
Mewayz Team
Editorial Team
Te Utu Huna o te Tauira Whakariterite
Mo nga kaiwhakawhanake, he taputapu tino nui te kii auau (regex), he maripi a te Ope Taua Swiss mo te poroporo, te whakamana, me te tango korero mai i te tuhinga. Mai i te tirotiro i nga whakatakotoranga imeera ki te tarai i nga raraunga mai i nga raarangi, ko te regex te otinga. Heoi, kei raro i tenei mata kaha he mahanga mahi i raru ai nga punaha mo nga tekau tau: ko te tino uaua o te waa ki te kimi i nga whakataetae katoa i roto i te aho ko O(n²). Ko te tikanga o tenei uauatanga o te wa tapawha, i te mea ka tipu haere te aho whakauru, ka taea te tipu haere o te wa tukatuka, ka arai i te puhoi ohorere, te ngenge rawa, me tetahi ahuatanga e kiia nei ko ReDoS(Regular Expression Deial of Service). Ko te mohio ki tenei herenga tuuturu ko te mahi tuatahi ki te hanga tono pakari ake, whai hua hoki.
He aha te Regex e Ōrite ana ki a O(n²)? Te Raruraru o te Whakamuri
Ko te putake o te whīwhiwhi O(n²) kei roto i te tikanga e whakamahia ana e te nuinga o nga miihini regex tuku iho: te hoki whakamuri. I te wa e ngana ana te miihini regex, penei i a Perl, Python, Java ranei, ki te rapu i nga whakataetae katoa ka taea, kare noa e matawai i te aho kotahi. Ka torotoro i nga huarahi rereke. Whakaarohia he tauira ngawari penei i te `(a+)+b` i hoatu ki te aho o te nuinga o nga "a", penei "aaaaaaaac". Ka whakahonoa e te miihini nga "a" katoa ki te `a+` tuatahi, katahi ka ngana ki te whakataurite ki te "b" whakamutunga. Ka rahua, ka hoki whakamuri—kaore e rite ki te "a" whakamutunga ka ngana i te inenga `+` i te roopu o waho. Ka hoki ano tenei mahi, ka akiaki i te miihini ki te whakamatau i nga huinga katoa ka taea te whakarōpū i nga "a", ka puta he pahūtanga whakakotahitanga o nga mea ka taea. Ko te maha o nga huarahi me tirotirohia e te miihini ka taea te orite ki te tapawha o te roa aho, no reira O(n²).
- Nga Inenga Haka: Ko nga tauira penei i te `.*`, i te `.+` ranei ka pau i te maha o nga kuputuhi ka taea i te tuatahi, ka ahu atu ki te hoki whakamuri nui ina kore e rite nga waahanga o muri o te tauira.
- Ngā Inenga Kohanga: Ko ngā kīanga pēnei i te `(a+)+`, `(a*a*)*` rānei ka waihanga i tētahi tau taupū o ngā huarahi ki te wehe i te aho tāuru, ka tino piki ake te wā tukatuka.
- Tauira rangirua: Ina taea te taurite i te aho i roto i te maha o nga huarahi inaki, me tirotiro te miihini ki ia tupono ka kitea nga taurite katoa.
Te Painga-Ao-Tuturu: He nui ake i te Pooro noa
Ehara tenei i te maaharahara matauranga anake. Ko te koretake o te regex ka pa he kino ki nga taiao whakaputa. Ko te ahua kino o te tirotiro whakamanatanga raraunga ka waiho hei poapoa i te wa e tukatuka ana i nga konae nui, e whakahaere ana ranei i te nui o te whakaurunga kaiwhakamahi. Ko te putanga tino kino ko te whakaeke ReDoS, i reira ka tukuna e te kaiwhakaari kino he aho kua oti te hanga e whakaohooho ana i nga mahi kino rawa atu i roto i te regex o te tono tukutuku, ka whakairihia te tūmau me te kore e waatea ki nga kaiwhakamahi tika. Mo nga pakihi, ka huri tika tenei ki te wa heke, ngaro nga moni whiwhi, me te ingoa kino. I te wa e hanga ana i nga punaha uaua, ina koa ko nga mea e tukatuka ana i nga raraunga kore pono, ko te mohio ki enei mahanga regex tetahi waahanga nui o te haumarutanga me te arotake mahi.
"I mua i a matou he whakahou whirihoranga iti i whakaurua he regex ki te tarai i nga aho-kaiwhakamahi. I raro i te utaina noa, he pai. Engari i te wa o te pikinga o te waka, i puta he rahunga rere ki raro i to matou API mo nga meneti. - He Kaihanga Matua DevOps
Hanga Pūnaha Maamaa me Mewayz
Na, me pehea e neke atu ai tatou i tenei herenga matua? Ko te otinga ko te huinga o nga taputapu pai ake me nga whiringa hoahoanga mohio. Tuatahi, ka taea e nga kaiwhakawhanake te whakamahi i nga kaitirotiro regex ki te tautuhi i nga tauira raru me te tuhi ano kia pai ake (hei tauira, te whakamahi i nga inenga whai mana, i nga roopu ngota ranei). Mo te mahi tino pai, kei te noho etahi atu algorithms hei whakapumau i te wa raina, O(n), mo te whakataurite tauira, ahakoa he iti noa i roto i nga whare pukapuka paerewa.
Koinei te waahi ka whakawhiwhia e te OS pakihi modular penei i a Mewayz he painga nui. Ka taea e Mewayz te wehewehe me te aro turuki i nga tukanga whakahirahira. Engari ki te whai tono monolithic ka taea e te regex puhoi kotahi te whakakopa i te punaha katoa, ka taea e koe te toha i tetahi ratonga moroiti motuhake mo te paahi raraunga me te whakamana. Mena ka puta he take mahi, kei roto, ka taea te whakatika me te kore e pa ki etahi atu whakahaere pakihi. I tua atu, ka taea e nga taputapu tirotiro i roto i te papaaho Mewayz te awhina i a koe ki te tohu i enei ngoikoretanga i mua i te pa atu ki o kaihoko, ka huri i te raru ka taea te mahi arotautanga. Na roto i te hanga i runga i te turanga ngawari me te kitea, ka whakarite koe ka mau tonu to mahi arorau pakihi, tae atu ki te tukatuka tuhinga matatini, me te mauri.
💡 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 →Patai Auau
Te Utu Huna o te Tauira Whakariterite
Mo nga kaiwhakawhanake, he taputapu tino nui te kii auau (regex), he maripi a te Ope Taua Swiss mo te poroporo, te whakamana, me te tango korero mai i te tuhinga. Mai i te tirotiro i nga whakatakotoranga imeera ki te tarai i nga raraunga mai i nga raarangi, ko te regex te otinga. Heoi, kei raro i tenei mata kaha he mahanga mahi i raru ai nga punaha mo nga tekau tau: ko te tino uaua o te waa ki te kimi i nga whakataetae katoa i roto i te aho ko O(n²). Ko te tikanga o tenei uauatanga o te wa tapawha, i te mea ka tipu haere te aho whakauru, ka taea te tipu haere o te wa tukatuka, ka arai ki te puhoi ohorere, te ngenge rawa, me tetahi ahuatanga e kiia nei ko ReDoS (Regular Expression Deial of Service). Ko te mohio ki tenei herenga tuuturu ko te mahi tuatahi ki te hanga tono pakari ake, whai hua hoki.
He aha te Regex e Ōrite ana ki a O(n²)? Te Raruraru o te Whakamuri
Ko te putake o te whīwhiwhi O(n²) kei roto i te tikanga e whakamahia ana e te nuinga o nga miihini regex tuku iho: te hoki whakamuri. I te wa e ngana ana te miihini regex, penei i a Perl, Python, Java ranei, ki te rapu i nga whakataetae katoa ka taea, kare noa e matawai i te aho kotahi. Ka torotoro i nga huarahi rereke. Whakaarohia he tauira ngawari penei i te `(a+)+b` i hoatu ki te aho o te nuinga o nga "a", penei "aaaaaaaac". Ka whakahonoa e te miihini nga "a" katoa ki te `a+` tuatahi, katahi ka ngana ki te whakataurite ki te "b" whakamutunga. Ka rahua, ka hoki whakamuri—kaore e rite ki te "a" whakamutunga ka ngana i te inenga `+` i te roopu o waho. Ka hoki ano tenei mahi, ka akiaki i te miihini ki te whakamatau i nga huinga katoa ka taea te whakarōpū i nga "a", ka puta he pahūtanga whakakotahitanga o nga mea ka taea. Ko te maha o nga huarahi me tirotirohia e te miihini ka taea te orite ki te tapawha o te roa aho, no reira O(n²).
Ko te Paanga Tuturu-Ao: Neke atu i te Pooro noa
Ehara tenei i te maaharahara matauranga anake. Ko te koretake o te regex ka pa he kino ki nga taiao whakaputa. Ko te ahua kino o te tirotiro whakamanatanga raraunga ka waiho hei poapoa i te wa e tukatuka ana i nga konae nui, e whakahaere ana ranei i te nui o te whakaurunga kaiwhakamahi. Ko te putanga tino kino ko te whakaeke ReDoS, i reira ka tukuna e te kaiwhakaari kino he aho kua oti te hanga e whakaohooho ana i nga mahi kino rawa atu i roto i te regex o te tono tukutuku, ka whakairihia te tūmau me te kore e waatea ki nga kaiwhakamahi tika. Mo nga pakihi, ka huri tika tenei ki te wa heke, ngaro nga moni whiwhi, me te ingoa kino. I te wa e hanga ana i nga punaha uaua, ina koa ko nga mea e tukatuka ana i nga raraunga kore pono, ko te mohio ki enei mahanga regex tetahi waahanga nui o te haumarutanga me te arotake mahi.
Te Hanga Pūnaha Maamaa me Mewayz
Na, me pehea e neke atu ai tatou i tenei herenga matua? Ko te otinga ko te huinga o nga taputapu pai ake me nga whiringa hoahoanga mohio. Tuatahi, ka taea e nga kaiwhakawhanake te whakamahi i nga kaitirotiro regex ki te tautuhi i nga tauira raru me te tuhi ano kia pai ake (hei tauira, te whakamahi i nga inenga whai mana, i nga roopu ngota ranei). Mo te mahi tino pai, kei te noho etahi atu algorithms hei whakapumau i te wa raina, O(n), mo te whakataurite tauira, ahakoa he iti noa i roto i nga whare pukapuka paerewa.
Hangahia to OS Pakihi i tenei ra
Mai i nga kaikorero koreutu ki nga umanga, ka whakahaerea e Mewayz nga umanga 138,000+ me te 208 whakaurunga. Tīmata kore utu, whakapai ake ina tipu koe.
Waihanga Pūkete Koreutu →We use cookies to improve your experience and analyze site traffic. Cookie Policy