JavaScript ရှိ Regular Expressions များတွင် Non-capturing Groups များ
ကွင်းစကွင်းပိတ် ( ) များသည် အလုပ်နှစ်မျိုးလုပ်သည် -
�ာလုံးများ အုပ်စုဖွဲ့ခြင်းနှင့် အုပ်စု (capturing group) အဖြစ် သိုလှောင်ခြင်းတို့ ဖြစ်ပါသည်။
အုပ်စုဖွဲ့ချင်ပေမယ့် သိုလှောင်စရာ (capture) မလိုချင်ရင် ဘယ်လိုလုပ်မလဲ?
ဒီပြဿနာအတွက် အထူးဖြေရှင်းချက်
non-capturing groups (?: )
ကို တီထွင်ထားသည် - ၎င်းတို့သည် အုပ်စုဖွဲ့ပေးသော်လည်း သိုလှောင်စရာအဖြစ် မသိမ်းဆည်းပါ။
ဥပမာ
အောက်ပါဥပမာတွင် ပထမကွင်းစကွင်းပိတ်များသည် အုပ်စုဖွဲ့ရန်အတွက် လိုအပ်ပြီး ဒုတိယကွင်းများသည် အုပ်စုအဖြစ်သိုလှောင်ရန် လိုအပ်ပါသည်။ သို့သော် ကွင်းနှစ်မျိုးစလုံးသည် အချက်အလက်များကို အုပ်စုအဖြစ် သိမ်းဆည်းပေးပါသည်။
let str = 'abab123';
let res = str.match(/(ab)+([1-9]+)/);
ရလဒ်အနေဖြင့် ကျွန်ုပ်တို့၏ အုပ်စုများတွင် အောက်ပါအတိုင်း ရှိလာမည်။
console.log(res[0]); // 'abab123' ကို ပြသမည်
console.log(res[1]); // 'ab' ကို ပြသမည်
console.log(res[2]); // '123' ကို ပြသမည်
ဥပမာ
ပထမကွင်းစကွင်းပိတ်များသည် အုပ်စုဖွဲ့ရန်သာလုပ်ပြီး အုပ်စုအဖြစ် မသိမ်းဆည်းစေရန် ပြုလုပ်ကြည့်ရအောင်။
let str = 'abab123';
let res = str.match(/(?:ab)+([1-9]+)/);
ရလဒ်အနေဖြင့် ပထမအုပ်စုတွင် ကျွန်ုပ်တို့၏ ဂဏန်းများ ရှိလာမည်။
console.log(res[1]); // '123' ကို ပြသမည်