Python တွင် Regular Expressions ရဲ့ Character Sets များ
\d နဲ့ \w စာလုံးအုပ်စုတွေက
သိပ်ပြီးလိုက်လျောညီထွေမရှိပါဘူး။ ဒီလိုရိုးရှင်းတဲ့
လုပ်စရာ ဂဏန်းတွေမဟုတ်တဲ့ စာလုံးအားလုံးကိုရှာဖွေခြင်း
ကိုတောင် သူတို့နဲ့ ဖြေရှင်းလို့မရပါဘူး။ ဒီလိုအလုပ်မျိုးအတွက်
ထောင့်ကွင်းစတုဂံတွေကို သုံးသင့်ပါတယ်၊ သူတို့က
'သို့မဟုတ်' လုပ်ဆောင်ချက်ကို ကိုယ်စားပြုပါတယ်။
ထောင့်ကွင်းစတုဂံတွေက အတွင်းမှာဖော်ပြထားတဲ့ တစ်လုံးစီထဲက
မည်သည့်စာလုံးတစ်လုံးကိုမဆို အစားထိုးပေးပါတယ်။
ဥပမာ၊ ဒီလိုx[abc]x - ကျွန်ုပ်တို့က
အစွန်းနှစ်ဖက်မှာ x စာလုံးတွေရှိရမယ်၊
အလယ်မှာတော့ - တစ်လုံး'a',
သို့မဟုတ် 'b',
သို့မဟုတ် 'c'။
ထောင့်ကွင်းစတုဂံတွေရဲ့နောက်မှာ ထပ်ကျော့သည့်အော်ပရေတာတွေ
ရေးလို့ရပါတယ်။ ဥပမာ၊ ဒီလိုx[abc]+x - ကျွန်ုပ်တို့က
x တွေကြားထဲမှာ 'a', 'b' နဲ့ 'c'
စာလုံးတွေ မည်မျှပမာဏမဆို မည်သည့်ပေါင်းစပ်မှုနဲ့မဆို
ရှိနိုင်တယ်လို့ပြောတာပါ။
စာလုံးတွေကိုပဲ စာရင်းပြုစရာမလိုဘဲ
စာလုံးအုပ်စုတွေကိုလည်း ဖန်တီးနိုင်ပါတယ်၊ စာလုံးနှစ်လုံးကြားမှာ
ဟိုက်ဖန်တစ်လျှောက် ရေးခြင်းအားဖြင့်ဖြစ်ပါတယ်။
ဥပမာ၊ ဒီလို[a-d] - ကျွန်ုပ်တို့
'a' မှ 'd' အထိ စာလုံးအားလုံးကို ရပါတယ်။
ဥပမာတွေကို ကြည့်ကြရအောင်။
ဥပမာ
ဒီဥပမာမှာ ရှာဖွေမှုပုံစံက
ဒီလိုပုံစံဖြစ်ပါတယ်x တွေကြားထဲမှာ
'a' မှ 'z' အထိ မည်သည့်စာလုံးမဆို:
ကုဒ်အလုပ်လုပ်ဆောင်မှုရလဒ်:
'! ! ! x@x'
ဥပမာ
ဒီဥပမာမှာ ရှာဖွေမှုပုံစံက
ဒီလိုပုံစံဖြစ်ပါတယ်x တွေကြားထဲမှာ
'a' မှ 'k' အထိ မည်သည့်စာလုံးမဆို:
txt = 'xax xbx xmx x@x'
res = re.sub('x[a-k]x', '!', txt)
print(res)
ကုဒ်အလုပ်လုပ်ဆောင်မှုရလဒ်:
'! ! xmx x@x'
ဥပမာ
ဒီဥပမာမှာ ရှာဖွေမှုပုံစံက
ဒီလိုပုံစံဖြစ်ပါတယ်x တွေကြားထဲမှာ
'A' မှ 'Z' အထိ မည်သည့်စာလုံးမဆို:
txt = 'xax xBx xcx x@x'
res = re.sub('x[A-Z]x', '!', txt)
print(res)
ကုဒ်အလုပ်လုပ်ဆောင်မှုရလဒ်:
'xax ! xcx x@x'
ဥပမာ
ဒီဥပမာမှာ ရှာဖွေမှုပုံစံက
ဒီလိုပုံစံဖြစ်ပါတယ်x တွေကြားထဲမှာ 0
မှ 9 အထိ မည်သည့်ဂဏန်းမဆို:
txt = 'xax x1x x3x x5x x@x'
res = re.sub('x[0-9]x', '!', txt)
print(res)
ကုဒ်အလုပ်လုပ်ဆောင်မှုရလဒ်:
'xax ! ! ! x@x'
ဥပမာ
ဒီဥပမာမှာ ရှာဖွေမှုပုံစံက
ဒီလိုပုံစံဖြစ်ပါတယ်x တွေကြားထဲမှာ 3
မှ 7 အထိ မည်သည့်ဂဏန်းမဆို:
txt = 'xax x1x x3x x5x x@x'
res = re.sub('x[3-7]x', '!', txt)
print(res)
ကုဒ်အလုပ်လုပ်ဆောင်မှုရလဒ်:
'xax x1x ! ! x@x'
ဥပမာ
ဒီဥပမာမှာ ရှာဖွေမှုပုံစံက
ဒီလိုပုံစံဖြစ်ပါတယ်x တွေကြားထဲမှာ
'a' မှ 'z' အထိ မည်သည့်စာလုံးမဆို သို့မဟုတ် 1
မှ 9 အထိ ဂဏန်း:
txt = 'xax x1x x3x x5x x@x'
res = re.sub('x[a-z1-9]x', '!', txt)
print(res)
ကုဒ်အလုပ်လုပ်ဆောင်မှုရလဒ်:
'! ! ! ! x@x'
ဥပမာ
ဒီဥပမာမှာ ရှာဖွေမှုပုံစံက
ဒီလိုပုံစံဖြစ်ပါတယ်x တွေကြားထဲမှာ
'a' မှ 'z' အထိ မည်သည့်စာလုံးမဆို သို့မဟုတ်
'A' မှ 'Z' အထိ စာလုံး:
txt = 'xax xBx xcx x5x x@x'
res = re.sub('x[a-zA-Z]x', '!', txt)
print(res)
ကုဒ်အလုပ်လုပ်ဆောင်မှုရလဒ်:
'! ! ! x5x x@x'
ဥပမာ
ဒီဥပမာမှာ ရှာဖွေမှုပုံစံက
ဒီလိုပုံစံဖြစ်ပါတယ်x တွေကြားထဲမှာ
'a' မှ 'z' အထိ မည်သည့်စာလုံးမဆို သို့မဟုတ် 1,
2 ဂဏန်း:
txt = 'xax xbx x1x x2x x3x'
res = re.sub('x[a-z12]x', '!', txt)
print(res)
ကုဒ်အလုပ်လုပ်ဆောင်မှုရလဒ်:
'! ! ! ! x3x'
ဥပမာ
ဒီဥပမာမှာ ရှာဖွေမှုပုံစံက
ဒီလိုပုံစံဖြစ်ပါတယ်x တွေကြားထဲမှာ 'a'
မှ 'z' အထိ စာလုံးများ 1 နှင့်
အထက် အရေအတွက်ဖြင့်:
txt = 'xx xabesx xaadx x123x xa3x'
res = re.sub('x[a-z]+x', '!', txt)
print(res)
ကုဒ်အလုပ်လုပ်ဆောင်မှုရလဒ်:
'xx ! ! ! x123x xa3x'
ဥပမာ
စာလုံးအရေအတွက်က သုညလည်းဖြစ်နိုင်အောင် လုပ်ကြည့်ရအောင်:
txt = 'xx xabesx xaadx x123x xa3x'
res = re.sub('x[a-z]*x', '!', txt)
print(res)
ရလဒ်အနေနဲ့ ကျွန်ုပ်တို့ရမှာ:
'! ! ! ! x123x xa3x'
ဥပမာ
ထောင့်ကွင်းစတုဂံတွေအတွင်းမှာ Escape လုပ်ထားတဲ့ စာလုံးတွေကိုလည်း သတ်မှတ်နိုင်ပါတယ်။ စာလုံးနဲ့ဂဏန်းတွေပါတဲ့ အစဉ်လိုက်ဖြစ်တည်မှုကို သုည (သို့) အကြိမ်များစွာ ထပ်ကျော့ပြီးရှာကြည့်ရအောင်:
txt = 'xx x@x xadx xas12x xa3x'
res = re.sub('x[a-z\d]*x', '!', txt)
print(res)
ကုဒ်အလုပ်လုပ်ဆောင်မှုရလဒ်:
'! x@x ! ! !'
ဥပမာ
ထောင့်ကွင်းစတုဂံတစ်ခုထပ်ထည့်ချင်ရင်တော့ သူတို့ကိုလည်း Escape လုပ်ဖို့လိုပါတယ်:
txt = 'xx xrx xas[]x x3x'
res = re.sub('x[a-z\[\]]*x', '!', txt)
print(res)
ကုဒ်အလုပ်လုပ်ဆောင်မှုရလဒ်:
'! ! ! x3x'
လက်တွေ့လေ့ကျင့်ခန်းများ
စာကြောင်းတစ်ကြောင်းပေးထားပါတယ်:
txt = 'aba aea aca aza axa'
Regular Expression တစ်ခုရေးပါ၊ ဒီပုံစံနဲ့
တွေ့ရှိရမယ်အစွန်းနှစ်ဖက်မှာ 'a' စာလုံးတွေ
ရှိပြီး၊ ကြားထဲမှာ - 'b',
'e' သို့မဟုတ် 'x' စာလုံး။
စာကြောင်းတစ်ကြောင်းပေးထားပါတယ်:
txt = 'a1a a3a a7a a9a aba'
Regular Expression တစ်ခုရေးပါ၊ ဒီပုံစံနဲ့
တွေ့ရှိရမယ်အစွန်းနှစ်ဖက်မှာ 'a' စာလုံးတွေ
ရှိပြီး၊ ကြားထဲမှာ - 3 မှ
6 အထိ ဂဏန်း။
စာကြောင်းတစ်ကြောင်းပေးထားပါတယ်:
txt = 'aba aea afa aha aga'
Regular Expression တစ်ခုရေးပါ၊ ဒီပုံစံနဲ့
တွေ့ရှိရမယ်အစွန်းနှစ်ဖက်မှာ 'a' စာလုံးတွေ
ရှိပြီး၊ ကြားထဲမှာ - 'a' မှ
'g' အထိ စာလုံး။
စာကြောင်းတစ်ကြောင်းပေးထားပါတယ်:
txt = 'aba aea afa aha aga'
Regular Expression တစ်ခုရေးပါ၊ ဒီပုံစံနဲ့
တွေ့ရှိရမယ်အစွန်းနှစ်ဖက်မှာ 'a' စာလုံးတွေ
�ှိပြီး၊ ကြားထဲမှာ - 'a' မှ
'f' အထိ နှင့် 'j' မှ
'z' အထိ စာလုံး။
စာကြောင်းတစ်ကြောင်းပေးထားပါတယ်:
txt = 'aAa aea aEa aJa a3a'
Regular Expression တစ်ခုရေးပါ၊ ဒီပုံစံနဲ့
တွေ့ရှိရမယ်အစွန်းနှစ်ဖက်မှာ 'a' စာလုံးတွေ
�ှိပြီး၊ ကြားထဲမှာ - 'a' မှ
'f' အထိ နှင့် 'A' မှ
'D' အထိ စာလုံး။
စာကြောင်းတစ်ကြောင်းပေးထားပါတယ်:
txt = 'aAXa aeffa aGha aza ax23a a3sSa'
Regular Expression တစ်ခုရေးပါ၊ ဒီပုံစံနဲ့
တွေ့ရှိရမယ်အစွန်းနှစ်ဖက်မှာ 'a' စာလုံးတွေ
ရှိပြီး၊ ကြားထဲမှာ - အင်္ဂလိပ်စာလုံးအသေး၊
ကျန်တာတွေကို မထိခိုက်စေဘဲ။
စာကြောင်းတစ်ကြောင်းပေးထားပါတယ်:
txt = 'aAXa aeffa aGha aza ax23a a3sSa'
Regular Expression တစ်ခုရေးပါ၊ ဒီပုံစံနဲ့
တွေ့ရှိရမယ်အစွန်းနှစ်ဖက်မှာ 'a' စာလုံးတွေ
ရှိပြီး၊ ကြားထဲမှာ - အင်္ဂလိပ်စာလုံးအသေးနဲ့
အကြီး, ကျန်တာတွေကို မထိခိုက်စေဘဲ။
စာကြောင်းတစ်ကြောင်းပေးထားပါတယ်:
txt = 'aAXa aeffa aGha aza ax23a a3sSa'
Regular Expression တစ်ခုရေးပါ၊ ဒီပုံစံနဲ့
တွေ့ရှိရမယ်အစွန်းနှစ်ဖက်မှာ 'a' စာလုံးတွေ
�ှိပြီး၊ ကြားထဲမှာ - အင်္ဂလိပ်စာလုံးအသေးနဲ့
ဂဏန်းများ, ကျန်တာတွေကို မထိခိုက်စေဘဲ။