Mtihani wa Mchoro wa Regex
Matokeo ya Mechi
Ingiza mchoro na maandiko ya kujaribu kuona matokeo
Hifadhi Mchoro
Matokeo ya Mechi
Ingiza mchoro na maandiko ya kujaribu kuona matokeo
Michoro Iliyo Hifadhiwa
Hakuna michoro iliyohifadhiwa bado
Mwongozo wa Alama za Regex
.
Inalingana na herufi yoyote isipokuwa newline\d
Inalingana na nambari yoyote (0-9)\D
Inalingana na herufi zisizo nambari\w
Inalingana na herufi yoyote ya neno (a-z, A-Z, 0-9, _)\W
Inalingana na herufi yoyote isiyo neno\s
Inalingana na herufi yoyote ya nafasi\S
Inalingana na herufi yoyote isiyo nafasi^
Inalingana na mwanzo wa mstari$
Inalingana na mwisho wa mstari*
Inalingana na 0 au zaidi ya herufi iliyotangulia+
Inalingana na 1 au zaidi ya herufi iliyotangulia?
Inalingana na 0 au 1 ya herufi iliyotangulia{n}
Inalingana na haswa n ya herufi iliyotangulia{n,}
Inalingana na angalau n ya herufi iliyotangulia{n,m}
Inalingana na kati ya n na m ya herufi iliyotangulia[abc]
Inalingana na moja ya herufi zilizo ndani ya mabano[^abc]
Inalingana na herufi yoyote isiyo ndani ya mabano(abc)
Inakusanya tokeni nyingi pamoja na kunasa mechia|b
Inalingana na a au b\b
Inalingana na nafasi ya mpaka wa nenoMtihani wa Mchoro wa Regex na Validator
Utangulizi
Mtihani wa mchoro wa Regular Expression (regex) ni chombo muhimu kwa wabunifu, wachambuzi wa data, na yeyote anayefanya kazi na usindikaji wa maandiko. Validator hii ya mchoro wa regex inakuruhusu kuunda, kujaribu, na kuboresha regular expressions kwa wakati halisi, ikitoa mrejesho wa haraka wa kuona kuhusu mechi za mchoro. Iwe unathibitisha anwani za barua pepe, unachambua faili za logi, au unatoa data maalum kutoka kwa maandiko, mtihani wetu wa regex unafanya mchakato wa maendeleo na urekebishaji kuwa wa haraka na wa kueleweka zaidi.
Regular expressions ni mfuatano wenye nguvu wa kuoanisha mifumo ambayo inaruhusu utafutaji wa maandiko wa hali ya juu, uthibitishaji, na urekebishaji. Hata hivyo, sintaksia yao inaweza kuwa ngumu na changamoto. Mtihani huu wa mchoro wa regex unarahisisha mchakato kwa kuangazia mechi unapoandika, kuthibitisha sintaksia ya mchoro, na kukuruhusu kuhifadhi mifano inayotumika mara kwa mara kwa marejeo ya baadaye.
Jinsi ya Kutumia Mtihani wa Mchoro wa Regex
Kutumia validator yetu ya mchoro wa regex ni rahisi na ya kueleweka. Fuata hatua hizi ili kuanza:
-
Ingiza Mchoro wa Regular Expression: Andika mchoro wako wa regex katika uwanja wa ingizo ulioainishwa. Chombo kinathibitisha mchoro wako kwa wakati halisi, kikikujulisha kuhusu makosa yoyote ya sintaksia.
-
Chagua Bendera za Regex: Chagua bendera zinazofaa kwa mchoro wako:
g
(Global): Pata mechi zote badala ya kusimama baada ya mechi ya kwanzai
(Case Insensitive): Fanya mchoro kuwa usio na kesim
(Multiline): Fanya^
na$
kuoanisha mwanzo/mwisho wa kila mstari- Mchanganyiko mbalimbali wa bendera hizi zinapatikana katika orodha ya kushuka
-
Ingiza Maandishi ya Jaribio: Ingiza maandiko unayotaka kujaribu dhidi ya mchoro wako katika eneo la maandiko ya jaribio.
-
Tazama Matokeo kwa Wakati Halisi: Unapoandika, chombo kiatomatikali:
- Huangazia mechi zote za mchoro katika maandiko ya jaribio
- Huonyesha jumla ya mechi zilizopatikana
- Inaonyesha ikiwa mchoro unalingana na maandiko yote
-
Hifadhi Mifano Muhimu: Kwa mifano unayotumia mara kwa mara:
- Ingiza lebo ya kuelezea kwa mchoro wako
- Bonyeza kitufe cha "Hifadhi"
- Fikia mifano yako iliyohifadhiwa kutoka sehemu ya "Mifano Iliyohifadhiwa"
-
Nakili Matokeo: Tumia kitufe cha "Nakili Mechi" kunakili maandiko yote yaliyopatikana kwenye clipboard yako kwa matumizi katika programu nyingine.
Kiolesura kimegawanywa katika paneli mbili kuu: paneli ya ingizo ambapo unaingiza mchoro wako na maandiko ya jaribio, na paneli ya matokeo inayonyesha mechi na habari za mchoro.
Msingi wa Mchoro wa Regular Expression
Regular expressions hutumia wahusika maalum na mfuatano kuunda mifumo ya utafutaji. Hapa kuna mwongozo wa alama za msingi za regex zinazoungwa mkono na chombo chetu:
Kuoanisha Wahusika
Alama | Maelezo | Mfano | Inaoanisha |
---|---|---|---|
. | Inaoanisha wahusika wowote isipokuwa newline | a.c | "abc", "adc", "a1c", nk. |
\d | Inaoanisha nambari yoyote (0-9) | \d{3} | "123", "456", "789", nk. |
\D | Inaoanisha wahusika wowote wasiokuwa nambari | \D+ | "abc", "xyz", nk. |
\w | Inaoanisha wahusika wowote wa neno (a-z, A-Z, 0-9, _) | \w+ | "abc123", "test_123", nk. |
\W | Inaoanisha wahusika wowote wasiokuwa wahusika wa neno | \W+ | "!@#", " + ", nk. |
\s | Inaoanisha wahusika wowote wa nafasi | a\sb | "a b", "a\tb", nk. |
\S | Inaoanisha wahusika wowote wasiokuwa nafasi | \S+ | "abc", "123", nk. |
Viashiria vya Nafasi
Alama | Maelezo | Mfano | Inaoanisha |
---|---|---|---|
^ | Inaoanisha mwanzo wa mstari | ^abc | "abc" mwanzoni mwa mstari |
$ | Inaoanisha mwisho wa mstari | abc$ | "abc" mwishoni mwa mstari |
\b | Inaoanisha mpaka wa neno | \bword\b | "word" kama neno kamili |
Wakati wa Kujiandaa
Alama | Maelezo | Mfano | Inaoanisha |
---|---|---|---|
* | Inaoanisha 0 au zaidi ya wahusika waliotangulia | a*b | "b", "ab", "aab", nk. |
+ | Inaoanisha 1 au zaidi ya wahusika waliotangulia | a+b | "ab", "aab", "aaab", nk. |
? | Inaoanisha 0 au 1 ya wahusika waliotangulia | colou?r | "color", "colour" |
{n} | Inaoanisha hasa n ya wahusika waliotangulia | a{3} | "aaa" |
{n,} | Inaoanisha angalau n ya wahusika waliotangulia | a{2,} | "aa", "aaa", "aaaa", nk. |
{n,m} | Inaoanisha kati ya n na m ya wahusika waliotangulia | a{2,4} | "aa", "aaa", "aaaa" |
Madarasa ya Wahusika
Alama | Maelezo | Mfano | Inaoanisha |
---|---|---|---|
[abc] | Inaoanisha yeyote kati ya wahusika katika mabano | [aeiou] | "a", "e", "i", "o", "u" |
[^abc] | Inaoanisha wahusika wowote wasiokuwa katika mabano | [^aeiou] | Wahusika wowote isipokuwa "a", "e", "i", "o", "u" |
[a-z] | Inaoanisha wahusika wowote katika safu | [a-z] | Wahusika wote wa herufi ndogo |
Uwekaji na Mbadala
Alama | Maelezo | Mfano | Inaoanisha |
---|---|---|---|
(abc) | Huunganisha tokeni nyingi pamoja na kukamata mechi | (abc)+ | "abc", "abcabc", nk. |
a|b | Inaoanisha ama a au b | cat|dog | "cat", "dog" |
Mifano ya Juu ya Regex
Mara tu unapokuwa umejifunza misingi, unaweza kuunda mifano ya hali ya juu zaidi ili kutatua changamoto ngumu za usindikaji wa maandiko:
Uthibitishaji wa Barua Pepe
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
Mchoro huu unathibitisha anwani za barua pepe kwa kuhakikisha zinafuata muundo wa kawaida: jina@domain.tld.
Uthibitishaji wa URL
^(https?:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)$
Mchoro huu unathibitisha URL, ikiwa ni pamoja na zile zenye au zisizo na itifaki ya http/https.
Uthibitishaji wa Nambari za Simu (Muundo wa Marekani)
^\(?(\d{3})\)?[- ]?(\d{3})[- ]?(\d{4})$
Mchoro huu unalingana na nambari za simu za Marekani katika muundo mbalimbali: (123) 456-7890, 123-456-7890, au 1234567890.
Uthibitishaji wa Tarehe (YYYY-MM-DD)
^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$
Mchoro huu unathibitisha tarehe katika muundo wa YYYY-MM-DD, ukiwa na uthibitishaji wa msingi wa safu za mwezi na siku.
Kuangalia na Kuangalia nyuma
Kuangalia na kuangalia nyuma kunaruhusu kuoanisha mifumo tu ikiwa inafuatiwa na au inatanguliwa na mfano mwingine:
- Kuangalia chanya:
a(?=b)
inaoanisha "a" tu ikiwa inafuatiwa na "b" - Kuangalia hasi:
a(?!b)
inaoanisha "a" tu ikiwa si inafuatiwa na "b" - Kuangalia chanya nyuma:
(?<=a)b
inaoanisha "b" tu ikiwa inatanguliwa na "a" - Kuangalia hasi nyuma:
(?<!a)b
inaoanisha "b" tu ikiwa si inatanguliwa na "a"
Kufanya Kazi na Bendera za Regex
Mtihani wetu wa regex unasaidia bendera mbalimbali zinazobadilisha jinsi mifumo inavyoanisha:
- g (Global): Pata mechi zote badala ya kusimama baada ya mechi ya kwanza
- i (Case Insensitive): Fanya mchoro usiwe na kesi
- m (Multiline): Fanya
^
na$
kuoanisha mwanzo/mwisho wa kila mstari - Mchanganyiko: Unaweza kuchanganya bendera kwa mahitaji ya mechi yaliyo ngumu zaidi
Matumizi ya Mtihani wa Mchoro wa Regex
Regular expressions yana matumizi mengi ya vitendo katika nyanja mbalimbali:
Maendeleo ya Mtandao
-
Uthibitishaji wa Fomu: Hakikisha ingizo la mtumiaji linalingana na muundo unaohitajika:
- Anwani za barua pepe:
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
- Nywila (ikiwa na mahitaji ya ugumu):
^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$
- URL:
^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$
- Anwani za barua pepe:
-
Uchambuzi wa HTML: Toa vipengele au sifa maalum:
- Pata vitambulisho vya picha zote:
<img[^>]+src="([^">]+)"
- Toa viungo:
<a[^>]+href="([^">]+)"
- Pata vitambulisho vya picha zote:
Usindikaji wa Data
-
Uchambuzi wa Faili za Logi: Toa habari kutoka kwa ingizo za logi:
- Anwani za IP:
\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b
- Tarehe na nyakati:
\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}
- Ujumbe wa makosa:
ERROR: .*
- Anwani za IP:
-
Uchambuzi wa CSV: Fanya kazi na thamani zilizotenganishwa kwa koma zikiwa na maeneo yanayoweza kunukuliwa:
- Mchoro wa uwanja wa CSV:
(?:^|,)(?:"([^"]*(?:""[^"]*)*)"|([^,]*))
- Mchoro wa uwanja wa CSV:
Usindikaji wa Maandishi
-
Pata na Badilisha: Tambua mifumo kwa ajili ya kubadilishwa:
- Ondoa vitambulisho vya HTML:
<[^>]*>
- Fanya muundo wa nambari za simu:
(\d{3})(\d{3})(\d{4})
→($1) $2-$3
- Ondoa vitambulisho vya HTML:
-
Utoaji wa Maudhui: Toa habari maalum kutoka kwa maandiko yasiyo na muundo:
- Toa tarehe:
\b(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s+\d{1,2},\s+\d{4}\b
- Pata thamani za fedha:
\$\d+(?:\.\d{2})?
- Toa tarehe:
Uprogramu na Uandishi wa Msimbo
-
Kuhakikisha Sintaksia: Tambua muundo wa lugha:
- Vigezo vya JavaScript:
\b(?:var|let|const)\s+([a-zA-Z_$][\w$]*)\b
- Mifano ya kazi:
function\s+([a-zA-Z_$][\w$]*)\s*\(
- Vigezo vya JavaScript:
-
Urekebishaji wa Msimbo: Pata mifumo inayohitaji kuboreshwa:
- Kuitwa kwa API zilizopitwa na wakati:
\.oldMethod\(
- Kazi zisizo salama:
eval\(
- Kuitwa kwa API zilizopitwa na wakati:
Kuhifadhi na Kudhibiti Mifano
Mtihani wetu wa mchoro wa regex unajumuisha mfumo wa usimamizi wa mifano unaokuruhusu kuhifadhi na kutumia tena mifano yako ya kawaida:
Lini Kuhifadhi Mifano
Fikiria kuhifadhi mifano ambayo:
- Unatumia mara kwa mara katika miradi tofauti
- Ni ngumu na vigumu kukumbuka
- Hutumikia madhumuni maalum ya uthibitishaji katika kazi yako
- Umeboreshwa baada ya mizunguko mingi
Mbinu Bora za Lebo za Mifano
Unapohifadhi mifano, tumia lebo zinazofafanua ambazo:
- Zinaonyesha kusudi la mchoro (mfano, "Mthibitishaji wa Barua Pepe")
- Zinaelezea muundo maalum (mfano, "Nambari za Simu za Marekani")
- Zinaelezea habari za toleo ikiwa unarekebisha mifano (mfano, "Mthibitishaji wa URL v2")
- Ni fupi lakini zenye taarifa
Shirika la Mifano
Panga mifano yako iliyohifadhiwa kwa:
- Kazi (uthibitishaji, utoaji, kubadilisha)
- Eneo (maendeleo ya wavuti, usindikaji wa data)
- Ugumu (msingi, wa juu)
- Mara kwa mara ya matumizi
Kushiriki Mifano
Ingawa chombo chetu hakisaidii moja kwa moja kushiriki mifano kati ya watumiaji, unaweza:
- Nakili mifano ili kushiriki na wenzako
- Andika mifano yako katika hazina ya pamoja
- Jumuisha maelezo ya mifano katika nyaraka za mradi
Kutatua Masuala ya Kawaida ya Regex
Hata wabunifu wenye uzoefu hukutana na changamoto na regular expressions. Hapa kuna suluhisho kwa masuala ya kawaida:
Makosa ya Sintaksia
Ikiwa mchoro wako unaonyesha kosa la uthibitishaji:
- Angalia ikiwa kuna mabano, mabano, au braces yasiyo na mechi
- Hakikisha wahusika maalum wamekwepa vizuri kwa kutumia backslash
- Thibitisha kuwa wahusika wa kujiandaa wana wahusika au vikundi vya awali
- Angalia sintaksia isiyo sahihi ya darasa la wahusika
Masuala ya Utendaji
Ikiwa regex yako ni polepole au inasababisha lag ya kivinjari:
- Epuka matumizi ya kupita kwa viwango vingi (mfano,
(a+)+
) - Kuwa makini na kuangalia nyuma na kuangalia mbele katika maandiko makubwa
- Fikiria kutumia mifano maalum badala ya mifano pana
- Gawanya mifano ngumu kuwa sehemu ndogo, zinazoweza kudhibitiwa
Mechi zisizotarajiwa
Ikiwa mchoro wako unalingana na maandiko yasiyo ya kutarajiwa:
- Tumia viashiria (
^
na$
) kuoanisha nyuzi nzima - Fanya madarasa ya wahusika kuwa maalum zaidi
- Ongeza mipaka ya neno (
\b
) ambapo inafaa - Tumia kuangalia hasi ili kuondoa mifumo fulani
Hakuna Mechi Iliyopatikana
Ikiwa mchoro wako hauwezi kuoanisha maandiko yaliyotarajiwa:
- Angalia masuala ya unyeti wa kesi (fikiria kutumia bendera
i
) - Thibitisha kuwa wahusika maalum wamekwepa vizuri
- Jaribu mchoro wako kwenye mifano iliyorahisishwa kwanza
- Hakikisha unatumia madarasa sahihi ya wahusika
Mbadala wa Regular Expressions
Ingawa regex ni yenye nguvu, si suluhisho bora kwa kila kazi ya usindikaji wa maandiko:
Mbinu za String
Kwa shughuli rahisi za maandiko, mbinu za asili za string mara nyingi ni wazi na bora:
String.indexOf()
kwa kutafuta sub-nyuziString.startsWith()
naString.endsWith()
kwa kuangalia mipaka ya nyuziString.split()
kwa tokenization ya msingi
WanaParse Maalum
Kwa muundo wa data iliyopangwa, wanaParse maalum ni thabiti zaidi:
- WanaParse wa JSON kwa data ya JSON
- WanaParse wa XML/HTML kwa lugha za alama
- WanaParse wa CSV kwa data ya jedwali
Usindikaji wa Lugha Asilia (NLP)
Kwa kuelewa maana ya maandiko badala ya mifumo tu:
- Zana za uchambuzi wa hisia
- Utambuzi wa viumbe vilivyopewa majina
- Uwekaji wa sehemu za hotuba
Lini Kuchagua Mbadala
Fikiria mbadala kwa regex unapokuwa:
- Muundo wa maandiko ni wa kawaida na rahisi
- Muundo huo una wanaParse wa kawaida unaopatikana
- Unahitaji kuelewa maana ya semantiki
- Utendaji ni muhimu kwa maandiko makubwa sana
Maswali Yanayoulizwa Mara kwa Mara
Nini maana ya regular expression?
Regular expression (regex) ni mfuatano wa wahusika unaofafanua mfano wa utafutaji. Mifano hii inaweza kutumika kwa utafutaji wa nyuzi, kuoanisha, na shughuli za urekebishaji wa maandiko.
Kwa nini nahitaji mtihani wa mchoro wa regex?
Mtihani wa mchoro wa regex unakusaidia kuendeleza na kurekebisha regular expressions kwa kutoa mrejesho wa kuona mara moja kuhusu mechi, kuthibitisha sintaksia ya mchoro, na kukuruhusu kujaribu mifano tofauti na bendera bila kuwa na haja ya kuitekeleza kwenye msimbo kwanza.
Ninaweza vipi kuoanisha wahusika maalum kama dot au asterisks?
Ili kuoanisha wahusika maalum wa kawaida wana maana maalum katika regex, unahitaji kuwakwepa kwa kutumia backslash. Kwa mfano, ili kuoanisha dot halisi, tumia \.
badala ya .
tu.
Ni tofauti gani kati ya .*
na .*?
katika mfano wa regex?
.*
ni mji wa greedy unaoanisha wahusika wengi kadri iwezekanavyo, wakati .*?
ni mji wa lazy (usio na greedy) unaoanisha wahusika wachache kadri iwezekanavyo. Tofauti hii ni muhimu unapohitaji kupata mechi fupi badala ya ndefu.
Je, naweza kutumia mtihani huu wa regex kwa mifano katika lugha yoyote ya programu?
Ingawa sintaksia ya msingi ya regex ni sawa katika lugha nyingi, kuna tofauti ndogo katika utekelezaji. Mtihani wetu hutumia injini ya regex ya JavaScript, ambayo inafanana na lugha nyingi za wavuti lakini inaweza kuwa na tofauti na regex katika lugha kama Python, Java, au Perl.
Ninaweza vipi kuthibitisha nyuzi nzima kwa regex?
Ili kuthibitisha kuwa nyuzi nzima inalingana na mfano, tumia kiashiria cha ^
mwanzoni na kiashiria cha $
mwishoni mwa regex yako. Kwa mfano, ^[0-9]+$
italingana tu na nyuzi zinazojumuisha kabisa nambari.
Ni nini vikundi vya kukamata na ninaweza vipi kuvifanya?
Vikundi vya kukamata, vinavyoundwa kwa mabano ()
, vinakuruhusu kutoa sehemu maalum za maandiko yaliyopatikana. Katika mtihani wetu, unaweza kuona mechi zote, ikiwa ni pamoja na vikundi vilivyokamatwa. Katika lugha za programu, unaweza kwa kawaida kufikia hizi kukamata kwa kuandika matokeo ya mechi.
Ninaweza vipi kufanya mifano yangu ya regex kuwa bora?
Ili kuboresha ufanisi wa regex: kuwa maalum na madarasa ya wahusika, epuka vikundi vya kukamata visivyohitajika (tumia vikundi visivyokamata (?:...)
inapowezekana), punguza matumizi ya kuangalia mbele/nyuma, na epuka mifumo ya kurudi nyuma inayoweza kusababisha matatizo kama vile viwango vingi vya kujiandaa.
Ni makosa yapi ya kawaida ya regex ya kuepuka?
Makosa ya kawaida ni pamoja na: kutokuweka wahusika maalum, kuunda mifano ambayo ni greedy kupita kiasi, kusahau kuashiria mifano (kwa ^
na $
), na kuandika mifano ngumu kupita kiasi ambazo ni vigumu kudumisha.
Je, regex inaweza kushughulikia muundo wa ndani kama HTML?
Regular expressions si nzuri kwa kuchambua muundo wa ndani kama HTML au XML. Ingawa unaweza kuunda mifano ya regex kwa mechi rahisi za HTML, kwa ujumla ni bora kutumia wanaParse maalum wa HTML kwa usindikaji wa HTML ngumu.
Marejeleo
- Friedl, J. E. F. (2006). Mastering Regular Expressions. O'Reilly Media.
- Goyvaerts, J., & Levithan, S. (2012). Regular Expressions Cookbook. O'Reilly Media.
- "Regular expression." Wikipedia, Wikimedia Foundation, https://en.wikipedia.org/wiki/Regular_expression
- MDN Web Docs. "Regular Expressions." Mozilla, https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
- RegExr: Learn, Build, & Test RegEx. https://regexr.com/
Jaribu mtihani wetu wa mchoro wa regex leo ili kurahisisha kazi zako za usindikaji wa maandiko, kuthibitisha muundo wa ingizo, na kutoa data yenye maana kutoka kwa maandiko yasiyo na muundo. Iwe wewe ni beginner unayejifunza misingi ya regular expressions au mbunifu mwenye uzoefu anayefanya kazi kwenye kuoanisha mifumo ngumu, chombo chetu kinatoa vipengele unavyohitaji kuunda, kujaribu, na kuboresha mifano yako ya regex kwa ufanisi.