Python ရှိ Regular Expression များတွင် Non-Capturing Parentheses များ

ကွင်းစကွင်းပိတ် ( ) တွေက အလုပ်နှစ်မျိုးလုပ်ပါတယ် - �ာလုံးများကို အုပ်စုဖွဲ့ခြင်းနှင့် capturing group (ကပ်မှတ်) အဖြစ်လုပ်ဆောင်ခြင်းပဲဖြစ်ပါတယ်။ ဒါဆို အုပ်စုဖွဲ့ချင်ပေမယ့် capturing group ထဲ မထည့်ချင်ဘူးဆိုရင်ကော ဘယ်လိုလုပ်မလဲ။ ဒီပြဿနာကိုဖြေရှင်းဖို့အတွက် �ထူး non-capturing parentheses (?: ) ကိုတီထွင်ထားပါတယ် - ၎င်းတို့ဟာ အုပ်စုဖွဲ့ပေးတယ်၊ ဒါပေမယ့် capturing group ထဲမှာ မသိမ်းဆည်းပါဘူး။

ဥပမာ

အောက်ပါဥပမာမှာ ပထမကွင်းတွေကို အုပ်စုဖွဲ့ဖို့အတွက် လိုအပ်ပြီး ဒုတိယကွင်းတွေကတော့ capturing group အတွက်ပါ။ ဒါပေမယ့် ကွင်းနှစ်မျိုးစလုံးဟာ capturing group ထဲကို ဒေတာတွေ သိမ်းဆည်းပေးပါတယ်။

pythontxt = 'abab123'
res = re.search('(ab)+([1-9]+)', txt)

ရလဒ်အနေနဲ့ ကျွန်ုပ်တို့ရဲ့ capturing groups တွေမှာ အောက်ပါအတိုင်းရှိလာပါလိမ့်မယ်။

pythonprint(res[0]) # 'abab123' ကိုပြသမည်
print(res[1]) # 'ab' ကိုပြသမည်
print(res[2]) # '123' ကိုပြသမည်

ဥပမာ

ပထမကွင်းစုံက အုပ်စုဖွဲ့ရုံပဲလုပ်ပြီး capturing group ထဲ မထည့်အောင်လုပ်ကြည့်ရအောင်။

pythontxt = 'abab123'
res = re.search('(?:ab)+([1-9]+)', txt)

ရလဒ်အနေနဲ့ ပထမ capturing group ထဲမှာ ကျွန်ုပ်တို့ရဲ့ ဂဏန်းတွေပဲရှိပါလိမ့်မယ်။

pythonprint(res[1]) # '123' ကိုပြသမည်