← ሁሉም መሣሪያዎች

Regex ሙከራ

መደበኛ አገላለጾችን በቀጥታ በራስዎ ጽሑፍ ላይ በአሳሽዎ ውስጥ ይገንቡ፣ ይሞክሩ እና ያርሙ። የቁምፊ ክፍሎችን፣ ብዜቶችን፣ መልህቆችን፣ ቡድኖችንና ባንዲራዎችን ይወቁ።

Regex Tester፦ በራስዎ ጽሑፍ ላይ ስርዓተ-ጥለቶችን ይገንቡ እና ያርሙ

Regular expression የጽሑፍ ቅርጽን ለመግለጽ ትንሽ ቋንቋ ነው። "ይህ ትክክለኛ ቃል እዚህ አለ?" ከመጠየቅ ይልቅ፣ regex "እንደዚህ የሚመስል ጽሑፍ አለ?" እንዲጠይቁ ያስችልዎታል። ይህ regex ኮድ አርታኢዎች፣ የመዝገብ ፋይሎች፣ የፎርም ግቤቶች እና ስክሪፕቶች ውስጥ ጽሑፍን ለማግኘት፣ ለማረጋገጥ፣ ለማውጣት እና ለመተካት ጠንካራ የሚያደርገው ነው። እንዲሁም ስህተት ለመስራት ቀላል የሚያደርገው ነው፣ ምክንያቱም በአዕምሮዎ ውስጥ ጥሩ የሚመስል ስርዓተ-ጥለት በጸጥታ በጣም ብዙ፣ በጣም ትንሽ፣ ወይም ምንም ላያገኝ ስለሚችል።

ለዚህ ነው በተግባር መሞከር ከመገመት የሚበልጠው። ስርዓተ-ጥለት ስትይቡ እና ግጥሚያዎች በእውነተኛ ናሙና ጽሑፍ ላይ ሲበሩ ስታዩ፣ ወዲያውኑ ግብረመልስ ያገኛሉ፦ ምን እንደተያዘ፣ ምን እንዳመለጠ፣ እና የትኛው መያዣ ቡድን የትኛውን ቁራጭ እንደያዘ ያያሉ። Regex Tester ችንም ሙሉ በሙሉ በአሳሽዎ ውስጥ ይካሄዳል። ስርዓተ-ጥለትዎ እና ናሙና ጽሑፍዎ በፍጹም ገጹን አይለቁም፣ ስለዚህ የመዝገብ መስመሮችን፣ ኢሜይሎችን፣ ወይም የፕሮዳክሽን መረጃ ወደ አገልጋይ ሳይልኩ መለጠፍ ይችላሉ።

ጥቁር ኢንዲጎ ዳራ ላይ ከሚፈስ የመረጃ ዥረት ውስጥ ልዩ የወርቅ ምልክቶችን የሚያገኝ የሚያበራ ሲያን ማጣሪያ
Regex ልክ እንደ ማጣሪያ ይሰራል፣ ከስርዓተ-ጥለትዎ ጋር የሚዛመዱትን ምልክቶች ብቻ ይመርጣል።

ማወቅ ተገቢ የግንባታ ብሎኮች

አብዛኞቹ ዕለታዊ ስርዓተ-ጥለቶች ከትንሽ ስብስብ ቁራጮች ይገነባሉ። እነዚህን ይማሩ እና በዱር ውስጥ የሚያገኟቸውን አብዛኞቹን regex ማንበብ ይችላሉ።

የፊደል ክፍሎች (character classes) የተፈቀዱ ፊደላት ስብስብ ይገልጻሉ። [aeiou] ማንኛውንም ነጠላ አናባቢ ያገኛል፣ [0-9] አንድ አሃዝ ያገኛል፣ [a-zA-Z] አንድ ፊደል ያገኛል። በቅንፎቹ ውስጥ ያለ ካሬት ስብስቡን ይክዳል፣ ስለዚህ [^0-9] "አሃዝ ያልሆነ ማንኛውም ፊደል" ማለት ነው። አጫጭር ቅጾች መተየብ ይቆጥባሉ፦ \d አሃዝ ነው፣ \w የቃል ፊደል ነው (ፊደላት፣ አሃዞች፣ underscore)፣ \s ባዶ ቦታ ነው፣ ነጥቡም . ማለት ይቻላል ማንኛውንም ነጠላ ፊደል ያገኛል።

ብዜቶች (quantifiers) ቀዳሚው ቁራጭ ስንት ጊዜ ሊደገም እንደሚችል ይናገራሉ። * ማለት ዜሮ ወይም ተጨማሪ ማለት ነው፣ + ማለት አንድ ወይም ተጨማሪ ማለት ነው፣ ? ማለት ዜሮ ወይም አንድ (አማራጭ) ማለት ነው። ለትክክለኛ ቁጥሮች፣ {3} ማለት በትክክል ሦስት ማለት ነው {2,4} ማለት ደግሞ ከሁለት እስከ አራት ማለት ነው። ስለዚህ \d{4} አራት-አሃዝ ዓመትን ያገኛል colou?r ደግሞ ሁለቱንም አጻጻፎች ያገኛል።

ማንጠልጠያዎች (anchors) ስርዓተ-ጥለትን ወደ ፊደል ሳይሆን ወደ ቦታ ይሰኩታል። ^ የጽሑፉን ጅምር ያገኛል፣ $ መጨረሻውን ያገኛል፣ \b ደግሞ የቃል ድንበርን ያመለክታል። ስርዓተ-ጥለቱ ^Error "Error" ብለው የሚጀምሩ መስመሮችን ብቻ ያገኛል፣ ይህም የመዝገብ ፋይሎችን ሲያስሱ በትክክል የሚፈልጉት ነው።

ቡድኖች (groups) የስርዓተ-ጥለት ክፍልን በቅንፍ ውስጥ ይጠቀልላሉ፣ ሁለቱንም ብዜትን በአንዴ በበርካታ ፊደላት ላይ ለመተግበር እና የተገጠመውን ጽሑፍ ለድጋሚ አጠቃቀም ለመያዝ። በ(\d{4})-(\d{2})-(\d{2}) ውስጥ እያንዳንዱ ቡድን በኋላ ማውጣት የሚችሉት የቀን ክፍልን ይይዛል። ተለዋጭ (alternation) በቧንቧ ምልክት "ወይም" ይሰራል፦ cat|dog|fish ከሦስቱ ቃላት አንዱን ያገኛል።

በእውነት የሚያስፈልጎት ስርዓተ-ጥለቶች

ጥቂት ደጋግመው የሚያጋጥሙ ስራዎች አብዛኛውን እውነተኛ ስራ ይሸፍናሉ። ኢሜይል-መሳይ ነገር ለማግኘት፣ [\w.+-]+@[\w-]+\.[\w.-]+ ተግባራዊ መነሻ ነው፤ ሙሉ ኢሜይል ማረጋገጫ በመደበኛ ስፔሲፊኬሽን መሰረት በጣም ውስብስብ ነው በመታወቁ፣ ልቅ ስርዓተ-ጥለት ተጠቃሚዎችን ከመከልከል ይልቅ እጩዎችን ለማድመቅ ትክክለኛ ምርጫ ነው።

ለቁጥሮች፣ \d+ ተከታታይ አሃዞችን ይይዛል፣ -?\d+(\.\d+)? ደግሞ አማራጭ አሉታዊ እና ዴሲማል ቁጥሮችን ያገኛል። መጀመሪያ እና መጨረሻ ላይ ያለውን ባዶ ቦታ ለማስወገድ፣ ^\s+|\s+$ ያዛምዱ እና በምንም ይተኩት። የተደጋገሙ ቃላትን ለማግኘት፣ የbackreference ስርዓተ-ጥለት \b(\w+)\s+\1\b አንድ ቃል በራሱ የተከተለውን ያገኛል፣ \1 ደግሞ ወደ መጀመሪያው የተያዘ ቡድን ይመለሳል።

ጨለማ ናቪ ላይ በሚፈስ ሲያን ፊደል-መሳይ ቅንጣቶች ወንዝ ውስጥ ተመርጠው በወርቅ የሚያበሩ ቃላት ተደምቀው
ቀጥታ ማድመቅ ስርዓተ-ጥለት በትክክል የትኞቹን የጽሑፍዎን ክፍሎች እንደሚያገኝ ያሳያል።

ባንዲራዎች የግጥሚያ ባህሪን ይለውጣሉ

ባንዲራዎች (flags) መላውን ስርዓተ-ጥለት የሚያሻሽሉ መቀያየሪያዎች ናቸው። global ባንዲራ (g) በመጀመሪያው ላይ ከመቆም ይልቅ እያንዳንዱን ግጥሚያ ያገኛል፣ ይህም ሁሉንም ክስተቶች ሲያደምቁ የሚፈልጉት ነው። case-insensitive ባንዲራ (i) error "Error" እና "ERROR" ላይ እኩል እንዲገጣጠም ያደርገዋል። multiline ባንዲራ (m) ^ እና $ን ይለውጣል ስለዚህ ከመላው ጽሑፍ ብቻ ሳይሆን ከእያንዳንዱ መስመር ጅምር እና መጨረሻ ጋር ይገጥማሉ፣ ይህም ለመስመር-በመስመር የመዝገብ ስራ አስፈላጊ ነው። ሌሎች ጠቃሚ ባንዲራዎች s (dotall፣ ነጥቡ የመስመር-ለውጦችን እንዲይዝ ማድረግ) እና ሙሉ ዩኒኮድ ማስተናገጃ uን ያካትታሉ።

ጣዕሞች እንደየቋንቋው ትንሽ ይለያያሉ

Regex የቋንቋ ዘር ነው፣ አንድ ቋሚ ደረጃ አይደለም። JavaScript፣ Python፣ PCRE (PHP)፣ Java፣ .NET፣ Go እና Rust ከላይ በተጠቀሰው ዋና ስርዓት ላይ ይስማማሉ፣ ግን በጠርዞቹ ላይ ይለያያሉ፦ lookbehind ድጋፍ፣ የተሰየመ-ቡድን ስርዓት ((?<name>...)(?P<name>...) ጋር)፣ የዩኒኮድ ንብረት escape ዎች፣ እና የትኞቹ ባንዲራዎች እንዳሉ ሁሉም ይለያያሉ። በአንድ ሞተር ውስጥ የሚሰራ ስርዓተ-ጥለት በሌላ ውስጥ ትንሽ ማስተካከያ ሊፈልግ ይችላል፣ ስለዚህ ራስዎ ከሚያቀርቡት ጣዕም ጋር መሞከር ይጠቅማል። ስርዓተ-ጥለትዎን ሲያስተካክሉ፣ ቀሪ የየገንቢ መሳሪያዎቻችን እና የጽሑፍ መሳሪያዎች ልክ ያገኙትን መረጃ ማጽዳት፣ ኢንኮድ ማድረግ እና መለወጥ ስራ ሊረዱ ይችላሉ።

በተደጋጋሚ የሚጠየቁ ጥያቄዎች

ጽሑፌ ወደ አገልጋይ ይላካል?

አይ። Regex Tester ሙሉ በሙሉ በአሳሽዎ ውስጥ ይካሄዳል። ስርዓተ-ጥለትዎ እና ናሙና ጽሑፍዎ በመሳሪያዎ ላይ ይቆያሉ እና በፍጹም አይላኩም፣ ስለዚህ ስሜታዊ መረጃ ለመለጠፍ ደህና ነው።

ይህ መሳሪያ የትኛውን regex ጣዕም ይጠቀማል?

በአሳሽዎ ውስጥ የተካተተውን የJavaScript regex ሞተር ይጠቀማል። ዋናው ስርዓት ከአብዛኞቹ ቋንቋዎች ከሚያውቁት ጋር ይመሳሰላል፣ ምንም እንኳ አንዳንድ የላቀ ባህሪያት ከPCRE፣ Python ወይም .NET ትንሽ ቢለያዩም።

ስግብግብ (greedy) እና ስንፍት (lazy) ግጥሚያ መካከል ያለው ልዩነት ምንድን ነው?

በነባሪነት ብዜቶች ስግብግብ ናቸው እናም በተቻለ መጠን ብዙ ጽሑፍ ይይዛሉ። የጥያቄ ምልክት መጨመር ስንፍት ያደርጋቸዋል፣ ስለዚህ በተቻለ መጠን ትንሽ ይይዛሉ። ለምሳሌ፣ ነጥብ ኮከብ ስግብግብ ነው ነጥብ ኮከብ ጥያቄ ምልክት ደግሞ ስንፍት ነው።

ትክክለኛ ልዩ ፊደልን እንዴት ማግኘት እችላለሁ?

በጠምዝማዛ (backslash) ያምልጡት። እውነተኛ ነጥብ ለማግኘት፣ backslash dot ይጻፉ። ተመሳሳይ ነገር እንደ ቅንፎች፣ ብራኬቶች፣ ፕላስ ምልክት እና የጥያቄ ምልክት ላሉ ሌሎች meta ፊደላትም ይተገበራል።

ስርዓተ-ጥለቴ ምንም ለምን አላገኘም?

የተለመዱ ምክንያቶች የጎደለ global ባንዲራ፣ ግጥሚያውን ወደ ተሳሳተ ቦታ የሚሰኩ ማንጠልጠያዎች፣ ያላመለጠ ልዩ ፊደል፣ ወይም ከጠበቁት ድንበር በላይ የሚሮጡ ስግብግብ ብዜቶች ናቸው። ወንጀለኛውን ለማግኘት ቁራጭ በቁራጭ ይሞክሩ።

የግጥሚያውን ክፍሎች መያዝ እችላለሁ?

አዎ። የመያዣ ቡድን ለመፍጠር የስርዓተ-ጥለት ክፍልን በቅንፍ ውስጥ ይጠቅልሉ። እያንዳንዱ ቡድን በተናጠል ይዘገባል፣ ይህም ከቀን አንድ የዓመት፣ ወር እና ቀን መስኮችን ማውጣት ያስችልዎታል።