ነጻ መለወጫ

ሬጌክስ ሞካሪ

በአሳሽዎ ውስጥ መደበኛ መግለጫዎችን ወዲያውኑ ይሞክሩ እና ያርሙ። ግጥሚያዎችን ያድምቁ፣ የተቀረጹ ቡድኖችን ይመልከቱ እና የመተካት ሁነታን ይጠቀሙ - ነፃ እና የግል።

//g
ባንዲራዎች፡

ስላዚህ መሳሪያ

መደበኛ አገላለጾች በጽሑፍ ውስጥ ቅጦችን ለማዛመድ ጎራ-ተኮር ቋንቋ ናቸው። ከ 1968 ጀምሮ የኮምፒዩተር አካል ናቸው እና አሁን በእያንዳንዱ ዘመናዊ የፕሮግራሚንግ ቋንቋ ፣ የጽሑፍ አርታኢ እና የትዕዛዝ መስመር መፈለጊያ መሳሪያዎች ውስጥ ተገንብተዋል። አገባቡ አጭር ነው ነገር ግን ለስህተት የተጋለጠ ነው፡ ትንንሽ ለውጦች በድብቅ የተለያየ ተዛማጅ ባህሪ ያስገኛሉ፣ እና ውስብስብ አባባሎች በፍጥነት የማይነበቡ ይሆናሉ። ስርዓተ-ጥለትን በሚያርትዑበት ጊዜ ተዛማጆችን በቅጽበት የሚያሳይ ሞካሪ regexን ለማዘጋጀት እና ለማረጋገጥ በጣም ውጤታማው መንገድ ነው።

ይህ ሞካሪ ጃቫስክሪፕት regex ሞተርን በመጠቀም በአሳሽዎ ውስጥ ይሰራል (መተግበሪያዎ በአሳሽ ውስጥ የሚሠራ ከሆነ የሚጠቀመው ተመሳሳይ ነው)። ስርዓተ-ጥለቶች እና የጽሑፍ ዝመናዎች በነቃ፡ እያንዳንዱ ለውጥ ወይ ግጥሚያውን እንደገና ያስኬዳል። ተዛማጅ ቡድኖች ይደምቃሉ፣ የተያዙ ቡድኖች ተዘርዝረዋል፣ እና ባንዲራዎች (ጉዳይ የማይሰማቸው፣ መልቲ መስመር፣ አለምአቀፍ) ለሙከራ ተጋልጠዋል።

የሬጌክስ አገባብ በሞተሮች መካከል በስውር ይለያያል። ጃቫ ስክሪፕት የ ECMAScript ዝርዝርን ይከተላል; Python፣ PCRE (በPHP እና ሌሎች ብዙ ጥቅም ላይ የሚውለው)፣ Java እና Go እያንዳንዳቸው የራሳቸው ቀበሌኛ ያላቸው ተደራራቢ ግን ተመሳሳይ ባህሪያት አሏቸው። እዚህ የተገነቡ ቅጦች ECMAScript አገባብ ይጠቀማሉ; የሞተር ተሻጋሪ ተንቀሳቃሽነት የእያንዳንዱን ዒላማ ሰነዶች መፈተሽ ይጠይቃል።

ለምን Regex ሞካሪ ይጠቀሙ

Regex ሳንካዎች ከተሰማሩ በኋላ ለማረም በጣም ከባድ ናቸው። ምክንያታዊ የሚመስለው ሥርዓተ ጥለት ከታሰበው በላይ ወይም ያነሰ ሊዛመድ ይችላል፣ በጠርዝ ጉዳዮች ላይ ሊወድቅ ይችላል፣ ወይም በአንዳንድ ግብዓቶች ላይ አስከፊ የኋላ መከታተያ ሊኖረው ይችላል። ከተወካይ ግብአት ጋር በተገናኘ መልኩ ቅጦችን መሞከር ከኮድ ግምገማ እና ምርት በፊት ጉዳዮችን ይይዛል።

ቅጦች ከሰነዶችም ይጠቀማሉ። መመሳሰል ካለበት ግብአት ጎን ለጎን regex ማሳየት እና የማይዛመድ ግቤት ሀሳቡን ግልጽ ያደርገዋል። የወደፊት ጠባቂዎች (በስድስት ወራት ውስጥ እራስዎን ጨምሮ) የተመዘገቡ የፈተና ጉዳዮችን ብልህ ባለ አንድ መስመር ባለሙያዎችን ከማድነቅ በላይ ያደንቃሉ።

እንዴት ይጠቀሙ

ስርዓተ ጥለት ይተይቡ፣ የፍተሻ ግቤትን ይተይቡ፣ የደመቁ ተዛማጆችን በቀጥታ ይመልከቱ።

  1. ስርዓተ ጥለትዎን ያስገቡ: በስርዓተ-ጥለት መስክ ውስጥ የሬጌክስ ንድፍ ይተይቡ። ሁለቱም በጥሬው regex (/ስርዓተ-ጥለት/ባንዲራ) እና ስርዓተ-ብቻ ቅጾች ይሰራሉ። ባንዲራዎች በባንዲራዎች ግቤት በኩል ሊዘጋጁ ይችላሉ.
  2. የሙከራ ግቤት ጨምር: ንድፉ መመሳሰል ያለበትን የናሙና ጽሁፍ ለጥፍ (እና በሐሳብ ደረጃ ደግሞ ጽሁፍ መመሳሰል የለበትም)። ሞካሪው ንድፉን ከግቤት ጋር ያካሂዳል እና ግጥሚያዎችን ያደምቃል።
  3. ባንዲራዎችን አዘጋጅ: የተለመዱ ባንዲራዎች፡ g (ዓለም አቀፋዊ፣ ሁሉንም ግጥሚያዎች አግኝ)፣ i (ጉዳይ የማይሰማ)፣ m (ባለብዙ መስመር፣ ^ እና $ ግጥሚያ መስመር ይጀምራል/ይጨርሳል)፣ s (dotall፣ . match newlines)፣ u (ዩኒኮድ)።
  4. ውጤቶችን መርምር: እያንዳንዱ ግጥሚያ በግቤት ውስጥ ጎልቶ ይታያል። የቀረጻ ቡድኖች የቡድን መረጃ ጠቋሚ እና እሴት ባለው ዝርዝር ውስጥ ይታያሉ። ሞካሪው የተዛማጆችን ብዛት እና በስርዓተ-ጥለት ውስጥ ያሉ ማናቸውንም የማጠናቀር ስህተቶችን ያሳያል።

የተለመዱ የአጠቃቀም ጉዳዮች

ቴክኒካዊ ዝርዝሮች

ጃቫ ስክሪፕት regex የ ECMAScript መግለጫን ይከተላል። ዋና ዋና ባህሪያት፡ የቁምፊ ክፍሎች ([abc]፣ [^abc])፣ መጠየቂያዎች (*፣ +፣ ?፣ {n፣m})፣ ተለዋጭ (|)፣ መቧደን ((...))፣ ቡድኖችን መያዝ እና የማይያዙ፣ እይታ እና ከኋላ መመልከት (ዘመናዊ ሞተሮች)፣ የኋላ ማጣቀሻዎች፣ የተሰየሙ ቡድኖች፣ የዩኒኮድ ንብረት አምልጧል (ከዩ ባንዲራ ጋር)፣ እና የደረጃው ስብስብ።

ከ PCRE እና Python ጠቃሚ ልዩነቶች፡ ከኋላ ያለው ድጋፍ በጃቫ ስክሪፕት (2018+) ውስጥ በቅርብ ጊዜ አለ። የተሰየሙ ቡድኖች (?<ስም>...) አገባብ ይጠቀማሉ; አንዳንድ የዩኒኮድ ማምለጫዎች የ u ባንዲራ በትክክል እንዲሰራ ይፈልጋሉ። ለቋንቋ አቋራጭ አገልግሎት የታቀዱ ቅጦች ከእያንዳንዱ ዒላማ ሰነዶች ጋር መፈተሽ አለባቸው።

አፈጻጸም፡ ወደ ኋላ በመከታተል ላይ የተመሰረቱ ሬጌክስ ሞተሮች (አብዛኞቹ ጃቫ ስክሪፕትን ጨምሮ) በተወሰኑ የፓቶሎጂ ንድፎች ላይ አስከፊ የኋላ መከታተያ ሊኖራቸው ይችላል። ሞካሪውን የሚሰቅሉ ሙከራዎች ንድፉ ማቅለል እንደሚያስፈልገው ምልክት ነው - በተለይም የጎጆ መለኪያዎችን እና አሻሚ ለውጦችን በማስወገድ።

ምርጥ ልምዶች

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

ይህ መሳሪያ የሚደግፈው የትኛውን የሬጌክስ ጣዕም ነው?
የJavaScript's ውስጠ ግንቡ የ RegExp ሞተርን ይጠቀማል፣ይህም መደበኛ አገባብ የሚደግፍ lookaheads፣ lookbehinds (በዘመናዊ አሳሾች)፣ የተሰየሙ የቀረጻ ቡድኖች እና የዩኒኮድ ንብረት ያመለጡ ናቸው።
የ regex መተኪያዎችን መሞከር እችላለሁ?
አዎ። የምትክ ስርዓተ ጥለት ለማስገባት ወደ ተካ ሁነታ ቀይር። ለቡድን የኋላ ማጣቀሻዎች $1፣$2፣ ወዘተ እና $<ስም> ለተሰየሙ ቡድኖች መጠቀም ይችላሉ።
ለምንድን ነው የእኔ ሬጌክስ ከ Python/PHP በተለየ እዚህ የሚዛመደው?
የተለያዩ የፕሮግራም አወጣጥ ቋንቋዎች ትንሽ ለየት ያሉ ሬጅክስ ሞተሮች አሏቸው። ጃቫስክሪፕት የባለቤትነት መለኪያዎችን ወይም አንዳንድ PCRE-ተኮር ባህሪያትን አይደግፍም። ዋናው አገባብ (የገጸ-ባህሪያት ክፍሎች፣ ኳንቲፊየሮች፣ ቡድኖች) በቋንቋዎች አንድ አይነት ነው።
መሣሪያው የእኔን regex ቅጦችን ያድናል?
ምንም ነገር አልተቀመጠም ወይም አይተላለፍም. መሣሪያው በአሳሽዎ ውስጥ ሙሉ በሙሉ ይሰራል። የ regex stringን በመገልበጥ ዕልባት ማድረግ ወይም ስርዓተ ጥለቶችን ማጋራት ይችላሉ።
የቃል በቃል ልዩ ባህሪን እንዴት ማዛመድ እችላለሁ?
ከኋላ በመሸሽ ያመልጡት። ከትክክለኛ ነጥብ ጋር ለማዛመድ፡ \. ከትክክለኛ የኋላ ሽንፈት ጋር ለማዛመድ፡ \\. የቁምፊ ክፍሎች ውስጥ [...], አብዛኞቹ ልዩ ቁምፊዎች ትርጉማቸውን ያጣሉ.
ሞካሪው በአገልጋይ ላይ እየሰራ ነው?
አይደለም የስርዓተ-ጥለት ማጠናቀር እና ማዛመድ በአሳሽዎ ውስጥ የ RegExp ተወላጅ የሆነውን ነገር በመጠቀም ይከሰታል።
ጃቫ ስክሪፕት ላልሆኑ ሞተሮች ቅጦችን መሞከር እችላለሁ?
በብዛት። ለቀላል ቅጦች ዋናዎቹ ሞተሮች ይስማማሉ. ለላቁ ባህሪያት (ከኋላ መመልከት፣ የአቶሚክ ቡድኖች፣ የባለቤትነት መለኪያዎች፣ የዩኒኮድ ንብረት አምልጦ) ከዒላማው ሞተር ሰነድ ጋር ያረጋግጡ።
በጣም ትልቅ ግብአት ያስተናግዳል?
እስከ ጥቂት ሜጋባይት ድረስ ያለችግር ይሰራል። ትላልቅ ግብዓቶች አሳሹን ሊያዘገዩ ወይም ሊሰቅሉት ይችላሉ፣በተለይ ወደ ኋላ ለመከታተል በተጋለጡ ቅጦች።