ኩሎም ናይ regex ምትእስሳራት ምርካብ ኩሉ ግዜ O(n2) እዩ ነይሩ። | Mewayz Blog Skip to main content
Hacker News

ኩሎም ናይ regex ምትእስሳራት ምርካብ ኩሉ ግዜ O(n2) እዩ ነይሩ።

ርእይቶታት

2 min read Via iev.ee

Mewayz Team

Editorial Team

Hacker News

ሕቡእ ወጻኢታት ምትእስሳር ቅዲ

ንደቨሎፐራት፡ ስሩዕ መግለጺታት (regex) መተካእታ ዘይብሉ መሳርሒ ኮይኑ፡ ካብ ጽሑፍ ሓበሬታ ንምትንታን፡ ንምርግጋጽን ንምውጻእን ዝሕግዝ ካራ ሰራዊት ስዊዘርላንድ እዩ። ካብ ምፍታሽ ቅርጽታት ኢመይል ክሳብ ዳታ ካብ ሎግ ምሕራር፡ regex እቲ ዝኸይድ ፍታሕ እዩ። ይኹን እምበር ኣብ ትሕቲ እዚ ሓያል ቅድመ-ገጽ ንዓሰርተታት ዓመታት ንስርዓታት ዘሳቐየ ናይ ኣፈጻጽማ መጻወድያ ኣሎ: እቲ ዝኸፍአ ናይ ግዜ ውስብስብነት ኩሎም ምትእስሳራት ኣብ ሓደ ሕብረ-ቁጽሪ ምርካብ O(n2) እዩ። እዚ ርብዒታዊ ናይ ግዜ ውስብስብነት ማለት እቲ እታው ሕብረ-ቁጽሪ ብመስመራዊ መንገዲ እናዓበየ ምስ ከደ፡ እቲ ናይ መስርሕ ግዜ ብዝለዓለ ደረጃ ክዓቢ ይኽእል፡ እዚ ድማ ናብ ዘይተጸበናዮ ምዝሕሓል፡ ምድኻም ጸጋታትን ብReDoS (Regular Expression Denial of Service) ዝፍለጥ ተርእዮን የስዕብ። ነዚ ባህርያዊ ድሩትነት ምርዳእ ዝያዳ ድልዱልን ስሉጥን ኣፕሊኬሽናት ንምህናጽ ዝወስድ ቀዳማይ ስጉምቲ እዩ።

Regex Matching O(n2) ንምንታይ እዩ? ጸገም ንድሕሪት ምምላስ

ሱር ናይቲ O(n2) ዝተሓላለኸነት ኣብቲ መብዛሕትኦም ባህላውያን ሞተር ረጀክስ ዝጥቀሙሉ ኣገባብ እዩ ዝርከብ፡ ንድሕሪት ምምላስ። ሓደ ሞተር ረጀክስ ከምቲ ኣብ ፐርል፡ ፓይቶን ወይ ጃቫ ዘሎ፡ ኩሉ ክኸውን ዝኽእል ምትእስሳር ክረክብ ክፍትን ከሎ፡ ነቲ ሕብረ-ቁጽሪ ሓንሳብ ጥራይ ኣይስካንን እዩ። ዝተፈላለየ መንገድታት ይድህስስ። ከም `(a+)+b` ዝኣመሰለ ቀሊል ቅዲ ኣብ መብዛሕትኡ "a"s ዘለዎ ሕብረ-ቁጽሪ ከም "aaaaaaaaac" ዝተተግበረ ንርአ። እቲ ሞተር ብስስዐ ንኹሎም "a"s ምስቲ ቀዳማይ `a+` የሰማምዖም፣ ድሕሪኡ ምስቲ ናይ መወዳእታ "b" ከመዓራርዮም ይፍትን። ምስ ዝፈሽል ንድሕሪት ይምለስ-ነታ ናይ መወዳእታ "a" ከይተመዓራረየን ነቲ `+` quantifier ኣብቲ ደጋዊ ጉጅለ ይፍትን። እዚ መስርሕ እዚ ይደጋገም፣ ሞተር ኩሉ ዝከኣል ውህደት ናይቲ "a"s ከመይ ክጥርነፉ ከም ዝኽእሉ ክፍትን የገድዶ፣ እዚ ድማ ናብ ውህደት ፍንጀራ ተኽእሎታት ይመርሕ። ሞተር ክድህስሶም ዘለዎ ብዝሒ መንገድታት ምስ ርብዒ ንውሓት ሕብረ-ቁጽሪ ተመጣጣኒ ክኸውን ይኽእል እዩ፣ ስለዚ O(n2).

    ዝብል ጽሑፍ ኣሎ።
  • ስሱዓት ቁጽሪ ዝህቡ: ከም `.*` ወይ `.+` ዝኣመሰሉ ቅጥዕታት ኣብ መጀመርታ ብዝተኻእለ መጠን ብዙሕ ጽሑፍ ይበልዑ፣ እዚ ድማ ስዒቦም ዝመጹ ክፋላት ናይቲ ቅዲ ክሰማምዑ ምስ ዘይክእሉ ናብ ሰፊሕ ንድሕሪት ምምላስ የስዕብ።
  • Nested Quantifiers: ከም `(a+)+` ወይ `(a*a*)*` ዝኣመሰሉ መግለጺታት ነቲ ምእታው ሕብረ-ቁጽሪ ንምምቃል ብዝሒ ዘለዎም መገድታት ይፈጥሩ፣ እዚ ድማ ናይ መስርሕ ግዜ ብዓቢኡ ይውስኽ።
  • ዘይንጹር ቅጥዕታት፡ ሓደ ሕብረ-ቁጽሪ ብብዙሕ ተደራራቢ መንገዲ ክመዓራረ ኣብ ዝኽእለሉ እዋን፡ ሞተር ኩሉ ምትእስሳር ንምርካብ ነፍሲ ወከፍ ተኽእሎ ክምርምር ኣለዎ።
ዝብል ጽሑፍ ኣሎ።

ጽልዋ ሓቀኛ ዓለም፡ ካብ ምዝሕሓል ንላዕሊ

እዚ ኣካዳሚያዊ ስክፍታ ጥራይ ኣይኮነን። ዘይብቑዕ ረገክስ ኣብ ናይ ምፍራይ ሃዋህው ከቢድ ሳዕቤን ክህልዎ ይኽእል። ዘይጎድእ ዝመስል ምጽራይ ዳታ ምጽራይ ዓበይቲ ፋይላት ኣብ ምምስራሕ ወይ ልዑል መጠን እታው ተጠቃሚ ኣብ እትሕዘሉ እዋን ዕንቅፋት ክኸውን ይኽእል። እቲ ኣዝዩ ሓደገኛ ውጽኢት መጥቃዕቲ ReDoS ኮይኑ፡ ሓደ ጐዳኢ ተዋሳኣይ ኣብ ሪጀክስ ናይ ሓደ ዌብ ኣፕሊኬሽን ዝኸፍአ ኣፈጻጽማ ዘበግስ ብጥንቃቐ ዝተሰርሐ ሕብረ-ቁጽሪ ብምቕራብ፡ ነቲ ሰርቨር ብኣድማዒ መንገዲ ተንጠልጢሉ ንሕጋውያን ተጠቀምቲ ከምዘይርከብ ይገብሮ። ንንግዳዊ ትካላት እዚ ብቐጥታ ናብ ምቁራጽ ግዜ፡ ዝጠፍአ ኣታዊን ዝተበላሸወ ዝናን ይትርጎም። ዝተሓላለኹ ስርዓታት ክትሃንጽ ከለኻ፡ ብፍላይ ድማ እቶም ዘይእመን ዳታ ዘሰላስሉ፡ ነዞም ናይ ረጀክስ መጻወድያታት ምፍላጥ ወሳኒ ኣካል ናይ ድሕነትን ኣፈጻጽማን ኦዲት እዩ።

"ሓደ እዋን ንእሽቶ ናይ ውቅር ምዕባለ ነይሩና፡ እዚ ድማ ንተጠቃሚ-ወኪል ሕብረ-ቁጽሪ ንምትንታን regex ኣተኣታትዩ። ኣብ ትሕቲ ንቡር ጽዕነት፡ ጽቡቕ ነይሩ። ኣብ እዋን ትራፊክ ስፓይክ ግን፡ ንኤፒኣይና ንደቓይቕ ዘውርድ ካስኬዲንግ ውድቀት ኣስዒቡ። እቲ ገበነኛ ከም ዘለና ፈጺምና ዘይንፈልጦ O(n2) regex እዩ ነይሩ።" - ላዕለዋይ መሃንድስ DevOps

ብመዋይዝ ብልሒ ዘለዎም ስርዓታት ምህናጽ

እሞ፡ ካብዚ መሰረታዊ ደረት ብኸመይ ንሰግር? እቲ መፍትሒ ዝሓሸ መሳርሕታትን በሊሕ ምርጫታት ስነ ህንጻን ውህደት ዘጠቓልል እዩ። ቀዳማይ፡ ዲቨሎፐራት ንጸገማዊ ቅዲታት ንምልላይን ዝያዳ ውጽኢታዊ ንኽኾኑ ዳግማይ ንምጽሓፍን (ንኣብነት፡ ዋንነት ዘለዎም ቁጽሪ ወይ ኣቶሚክ ጉጅለታት ብምጥቃም) ረጀክስ ተንተንቲ ክጥቀሙ ይኽእሉ። ንናይ መወዳእታ ኣፈጻጽማ፡ ኣብ መደበኛ ቤተ-መጻሕፍቲ ውሑድ እኳ እንተኾነ፡ ንመስመራዊ ግዜ፡ O(n)፡ ንመስመራዊ ግዜ፡ O(n)፡ ውሕስነት ዝህቡ ኣማራጺ ኣልጎሪዝማት ኣለዉ።

እዚ እዩ ከም መዋይዝ ዝኣመሰለ ሞዱላር ቢዝነስ ኦኤስ ርኡይ ብልጫ ዝህበሉ። መዋይዝ ንኣገደስቲ መስርሓት ክትከፋፈልን ክትከታተልን የኽእለካ። ኣብ ክንዲ ሓደ ስሉጥ ረጀክስ ንብምሉኡ እቲ ስርዓት ስንኩል ክገብሮ ዝኽእል ሞኖሊቲክ ኣፕሊኬሽን ምህላው፡ ንዳታ ፓርሲንግን ምርግጋጽን ውፉይን ዝተነጸለን ማይክሮሰርቪስ ከተዋፍር ትኽእል። ናይ ኣፈፃፅማ ጉዳይ እንተተላዒሉ ንኻልኦት ንግዳዊ ስርሓት ከይፀለወ ተዓዚቡን ክፍታሕ ይኽእልን። ካብዚ ሓሊፉ፡ ኣብ ውሽጢ መድረኽ መዋይዝ ዝርከቡ ናይ ትዕዝብቲ መሳርሒታት፡ ነዞም ዘይብቕዓት ቅድሚ ንዓማዊልካ ጽልዋ ምፍጣሮም፡ ንኽትፈልጦም ክሕግዙኻ ይኽእሉ፡ እዚ ድማ ነቲ ክመጽእ ዝኽእል ቅልውላው ናብ ዝመሓደር ናይ ምምሕያሽ ዕማም ይቕይሮ። ኣብ ተዓጻጻፍን ክትዕዘብን ዝኽእል መሰረት ብምህናጽ፡ ዝተሓላለኸ መስርሕ ጽሑፍ ሓዊሱ ንግዳዊ ስነ-መጐትካ፡ ኣፈጻጽማን ተጻዋርን ኮይኑ ከም ዝቕጽል ትረጋግጽ።

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

ብተደጋጋሚ ዝሕተቱ ሕቶታት

ሕቡእ ወጻኢታት ምትእስሳር ቅዲ

ንደቨሎፐራት፡ ስሩዕ መግለጺታት (regex) መተካእታ ዘይብሉ መሳርሒ ኮይኑ፡ ካብ ጽሑፍ ሓበሬታ ንምትንታን፡ ንምርግጋጽን ንምውጻእን ዝሕግዝ ካራ ሰራዊት ስዊዘርላንድ እዩ። ካብ ምፍታሽ ቅርጽታት ኢመይል ክሳብ ዳታ ካብ ሎግ ምሕራር፡ regex እቲ ዝኸይድ ፍታሕ እዩ። ይኹን እምበር ኣብ ትሕቲ እዚ ሓያል ቅድመ-ገጽ ንዓሰርተታት ዓመታት ንስርዓታት ዘሳቐየ ናይ ኣፈጻጽማ መጻወድያ ኣሎ: እቲ ዝኸፍአ ናይ ግዜ ውስብስብነት ኩሎም ምትእስሳራት ኣብ ሓደ ሕብረ-ቁጽሪ ምርካብ O(n2) እዩ። እዚ ርብዒታዊ ናይ ግዜ ዝተሓላለኸነት ማለት እቲ እታው ሕብረ-ቁጽሪ ብመስመራዊ መንገዲ እናዓበየ ምስ ከደ፡ እቲ ናይ መስርሕ ግዜ ብዝለዓለ ደረጃ ክዓቢ ይኽእል እዩ፡ እዚ ድማ ናብ ዘይተጸበናዮ ምዝሕሓል፡ ምድኻም ጸጋታትን ብReDoS (Regular Expression Denial of Service) ዝፍለጥ ተርእዮን የስዕብ። ነዚ ባህርያዊ ድሩትነት ምርዳእ ዝያዳ ድልዱልን ስሉጥን ኣፕሊኬሽናት ንምህናጽ ዝወስድ ቀዳማይ ስጉምቲ እዩ።

Regex Matching O(n2) ንምንታይ እዩ? ጸገም ንድሕሪት ምምላስ

ሱር ናይቲ O(n2) ዝተሓላለኸነት ኣብቲ መብዛሕትኦም ባህላውያን ሞተር ረጀክስ ዝጥቀሙሉ ኣገባብ እዩ ዝርከብ፡ ንድሕሪት ምምላስ። ሓደ ሞተር ረጀክስ ከምቲ ኣብ ፐርል፡ ፓይቶን ወይ ጃቫ ዘሎ፡ ኩሉ ክኸውን ዝኽእል ምትእስሳር ክረክብ ክፍትን ከሎ፡ ነቲ ሕብረ-ቁጽሪ ሓንሳብ ጥራይ ኣይስካንን እዩ። ዝተፈላለየ መንገድታት ይድህስስ። ከም `(a+)+b` ዝኣመሰለ ቀሊል ቅዲ ኣብ መብዛሕትኡ "a"s ዘለዎ ሕብረ-ቁጽሪ ከም "aaaaaaaaac" ዝተተግበረ ንርአ። እቲ ሞተር ብስስዐ ንኹሎም "a"s ምስቲ ቀዳማይ `a+` የሰማምዖም፣ ድሕሪኡ ምስቲ ናይ መወዳእታ "b" ከመዓራርዮም ይፍትን። ምስ ዝፈሽል ንድሕሪት ይምለስ-ነታ ናይ መወዳእታ "a" ከይተመዓራረየን ነቲ `+` quantifier ኣብቲ ደጋዊ ጉጅለ ይፍትን። እዚ መስርሕ እዚ ይደጋገም፣ ሞተር ኩሉ ዝከኣል ውህደት ናይቲ "a"s ከመይ ክጥርነፉ ከም ዝኽእሉ ክፍትን የገድዶ፣ እዚ ድማ ናብ ውህደት ፍንጀራ ተኽእሎታት ይመርሕ። ሞተር ክድህስሶም ዘለዎ ብዝሒ መንገድታት ምስ ርብዒ ንውሓት ሕብረ-ቁጽሪ ተመጣጣኒ ክኸውን ይኽእል እዩ፣ ስለዚ O(n2).

ጽልዋ ሓቀኛ ዓለም፡ ካብ ምዝሕሓል ንላዕሊ

እዚ ኣካዳሚያዊ ስክፍታ ጥራይ ኣይኮነን። ዘይብቑዕ ረገክስ ኣብ ናይ ምፍራይ ሃዋህው ከቢድ ሳዕቤን ክህልዎ ይኽእል። ዘይጎድእ ዝመስል ምጽራይ ዳታ ምጽራይ ዓበይቲ ፋይላት ኣብ ምምስራሕ ወይ ልዑል መጠን እታው ተጠቃሚ ኣብ እትሕዘሉ እዋን ዕንቅፋት ክኸውን ይኽእል። እቲ ኣዝዩ ሓደገኛ ውጽኢት መጥቃዕቲ ReDoS ኮይኑ፡ ሓደ ጐዳኢ ተዋሳኣይ ኣብ ሪጀክስ ናይ ሓደ ዌብ ኣፕሊኬሽን ዝኸፍአ ኣፈጻጽማ ዘበግስ ብጥንቃቐ ዝተሰርሐ ሕብረ-ቁጽሪ ብምቕራብ፡ ነቲ ሰርቨር ብኣድማዒ መንገዲ ተንጠልጢሉ ንሕጋውያን ተጠቀምቲ ከምዘይርከብ ይገብሮ። ንንግዳዊ ትካላት እዚ ብቐጥታ ናብ ምቁራጽ ግዜ፡ ዝጠፍአ ኣታዊን ዝተበላሸወ ዝናን ይትርጎም። ዝተሓላለኹ ስርዓታት ክትሃንጽ ከለኻ፡ ብፍላይ ድማ እቶም ዘይእመን ዳታ ዘሰላስሉ፡ ነዞም ናይ ረጀክስ መጻወድያታት ምፍላጥ ወሳኒ ኣካል ናይ ድሕነትን ኣፈጻጽማን ኦዲት እዩ።

ብመዋይዝ ብልሒ ዘለዎም ስርዓታት ምህናጽ

እሞ፡ ካብዚ መሰረታዊ ደረት ብኸመይ ንሰግር? እቲ መፍትሒ ዝሓሸ መሳርሕታትን በሊሕ ምርጫታት ስነ ህንጻን ውህደት ዘጠቓልል እዩ። ቀዳማይ፡ ዲቨሎፐራት ንጸገማዊ ቅዲታት ንምልላይን ዝያዳ ውጽኢታዊ ንኽኾኑ ዳግማይ ንምጽሓፍን (ንኣብነት፡ ዋንነት ዘለዎም ቁጽሪ ወይ ኣቶሚክ ጉጅለታት ብምጥቃም) ረጀክስ ተንተንቲ ክጥቀሙ ይኽእሉ። ንናይ መወዳእታ ኣፈጻጽማ፡ ኣብ መደበኛ ቤተ-መጻሕፍቲ ውሑድ እኳ እንተኾነ፡ ንመስመራዊ ግዜ፡ O(n)፡ ንመስመራዊ ግዜ፡ O(n)፡ ውሕስነት ዝህቡ ኣማራጺ ኣልጎሪዝማት ኣለዉ።

ሎሚ ናይ ቢዝነስ ኦኤስካ ሃንጽ

ካብ ነጻ ሞያውያን ክሳብ ትካላት፡ መዋይዝ ን138,000+ ትካላት ንግዲ ብ208 ዝተዋሃሃዱ ሞዱላት ሓይሊ ይህብ። ብነጻ ጀምር፣ ምስ ዓበኻ ኣዕብዮ።

ነጻ ኣካውንት ምፍጣር →
ዝብል ጽሑፍ ኣሎ።

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