JavaScript ရှိ Regular Expression အတွင်း Capturing Groups များ
Capturing group များ၏ အကြောင်းအရာကို အစားထိုးသည့် စာကြောင်းတွင်သာမက regular expression အတွင်း၌လည်း ရယူနိုင်ပါသည် - ကျွန်ုပ်တို့သည် တစ်ခုခုကို capturing group ထဲသို့ ထည့်နိုင်ပြီး၊ ထို့နောက် ထို capturing group ၏ အကြောင်းအရာ ရှိရမည်ဟု ညွှန်ပြရန် regular expression အတွင်း၌ပင် ပြောနိုင်ပါသည်။
Capturing group များ၏ အကြောင်းအရာကို ၎င်းတို့၏နံပါတ်များဖြင့် ရယူနိုင်ပြီး၊ ၎င်းနံပါတ်များရှေ့တွင် backslash တစ်ခုရှိသည်။ ဥပမာ၊ ပထမ capturing group ကို ဤသို့ရယူနိုင်သည် - \1၊ ဒုတိယ capturing group ကို ဤသို့ရယူနိုင်သည် - \2၊ တတိယ capturing group ကို ဤသို့ရယူနိုင်သည် - \3 စသဖြင့် ဖြစ်သည်။
အထက်ဖော်ပြပါ အရာအားလုံးသည် သင့်အတွက် လောလောဆယ်တွင် ရှုပ်ထွေးနေမည်မှာ သေချာပါသည်။ ၎င်းမှာ အံ့ဩစရာမဟုတ်ပါ၊ အဘယ့်ကြောင့်ဆိုသော် capturing group များသည် regular expression များ၏ အရှုပ်ထွေးဆုံးနေရာဖြစ်သောကြောင့်ပင်။ ဥပမာများဖြင့် ရှင်းလင်းကြည့်ရအောင်။
ဥပမာ
ကျွန်ုပ်တို့တွင် ဤကဲ့သို့သော စာကြောင်းတစ်ခုရှိသည်ဆိုပါစို့ -
let str = 'aa bb cd ef';
ထို့အတွင်းရှိ မည်သည့်စာလုံးမျိုးဖြစ်စေ တူညီသော စာလုံးနှစ်လုံး ဆက်တိုက်ရှိသည့် နေရာအားလုံးကို ရှာကြည့်ရအောင်။ ပြဿနာကိုဖြေရှင်းရန် မည်သည့်စာလုံးကိုမဆို ရှာပြီး၊ ၎င်းကို capturing group ထဲသို့ ထည့်ကာ၊ ထို့နောက် နောက်ထပ် အက္ခရာသည် ထို capturing group ၏ အကြောင်းအရာဖြစ်မဖြစ် စစ်ဆေးမည်။
let res = str.replace(/([a-z])\1/g, '!');
ရလဒ်အနေဖြင့် variable ထဲတွင် အောက်ပါအတိုင်း ရေးသွင်းမည်ဖြစ်သည် -
'! ! cd ef'
ဥပမာ
ကျွန်ုပ်တို့တွင် ဤကဲ့သို့သော စာကြောင်းတစ်ခုရှိသည်ဆိုပါစို့ -
let str = 'asxca buzxb csgd';
ထို့အတွင်းရှိ ပထမနှင့် နောက်ဆုံးစာလုံး တူညီသော စကားလုံးအားလုံးကို ရှာကြည့်ရအောင်။ ပြဿနာကိုဖြေရှင်းရန် အောက်ပါ pattern ကိုရေးမည် - စာလုံး၊ ထို့နောက် နောက်ထပ်စာလုံးတစ်လုံး သို့မဟုတ် တစ်လုံးထက်ပိုပြီး၊ ထို့နောက် ပထမစာလုံးကဲ့သို့ တူညီသောစာလုံး။
let res = str.replace(/([a-z])[a-z]+\1/g, '!');
ရလဒ်အနေဖြင့် variable ထဲတွင် အောက်ပါအတိုင်း ရေးသွင်းမည်ဖြစ်သည် -
'! ! csgd'
လက်တွေ့လေ့ကျင့်ခန်းများ
စာကြောင်းတစ်ခုပေးထားသည် -
let str = 'aaa bbb ccc xyz';
တူညီသော စာလုံးသုံးလုံး ဆက်တိုက်ပါရှိသည့် substring အားလုံးကို ရှာပါ။
စာကြောင်းတစ်ခုပေးထားသည် -
let str = 'a aa aaa aaaa aaaaa';
တူညီသော စာလုံးနှစ်လုံး သို့မဟုတ် ထို့ထက်ပိုပြီး ဆက်တိုက်ပါရှိသည့် substring အားလုံးကို ရှာပါ။
စာကြောင်းတစ်ခုပေးထားသည် -
let str = 'aaa aaa bbb bbb ccc ddd';
တူညီသော စကားလုံးနှစ်လုံး ဆက်တိုက်ပါရှိသည့် substring အားလုံးကို ရှာပါ။