(Regular Expression Syntax)
စကားလံုးအစုပံုစံ
(Regular Expression) ဆိုတာ စာကားလံုးမ်ားကိုသံုးထားတဲ့ ပံုစံ (pattern of
Text) ၿဖစ္တဲ့အတြက္ သူ ့မွာ သာမန္ စကားလံုးမ်ား (ordinary characters - a
မွ z အထိ) ၊ အထူး စကားလံုးမ်ား (special characters or metacharacters)
ေတြပါ၀င္ပါတယ္။
ေအာက္ပါ
ဇယားကြက္မွာ အထူး စကားလံုးမ်ား (metacharacters**) နဲ ့ သူတို ရဲ ့ ၿပဳမွဳ
ႏိုင္တဲ့စြမ္းရည္ (behavior) တိုကို ေဖာ္ၿပထားပါတယ္။
စကားလံုးမ်ား (Characters)
|
အဓိပါယ္ဖြင့္ဆိုခ်က္(Description)
|
|
|
\
|
သူေနာက္က စာလံုးကို special characters ၊ သို ့ literal အၿဖစ္ ၿပဳမွဳေပးပါတယ္။ ဥပမာ -ပံုမွန္ဆိုရင္ ‘n’
က စာလံုး “n” နဲ ့ တိုက္စစ္ (Match) ပါတယ္။ ဒါေပမယ္ ‘\n’
ၿဖစ္သြားရင္ေတာ့ ေနာက္ အသစ္တလိုင္း (newline character) ၿဖစ္သြားပါတယ္။ ‘\\’ က “\” နဲ ့တိုက္ၿပီး ၊ “\(” က “(” နဲ ့တိုက္စစ္ပါတယ္။
|
^
|
၀င္လာတဲ့ စာအစဥ္အတန္း (Input string )ရဲ ့ ပထမဆံုး ေနရာ (position at the beginning) ကို တိုက္စစ္္ပါတယ္။
|
$
|
၀င္လာတဲ့ စာအစဥ္အတန္း (Input string )ရဲ ့ ေနာက္ဆံုး ေနရာ (position at the end) ကို တိုက္စစ္္ပါတယ္။
|
*
|
သူရဲ ့ေရွမွာ ရိွေနတဲ့ စာလံုး(character) သို ့မဟုတ္ စာလံုးအစုငယ္ (subexpression) ေတြကို 0 or more အၾကိမ္အေရအတြက္ တိုက္ပါတယ္။ ဥပမာ - “zo*” က “z” and “zoo” ကို တိုက္ပါတယ္။ * က {0,} နဲ ့ အတူတူပဲ ၿဖစ္ပါတယ္။ သေဘာက o က လံုး၀မပါရင္လည္းၿဖစ္တယ္။ တစ္လံုးထက္ပိုပါရင္လည္း ၿဖစ္တယ္။
|
+
|
သူရဲ
့ေရွမွာ ရိွေနတဲ့ စာလံုး(character) သို ့ စာလံုးအစုငယ္
(subexpression) ေတြကို one or more အၾကိမ္အေရအတြက္ တိုက္ပါတယ္။ ဥပမာ -
“zo+” က “zo” and “zoo”
ကို တိုက္ပါတယ္။ ဒါေပမယ့္ “z” ကို မတိုက္ပါဘူး။ + က {1,} နဲ ့
အတူတူပဲၿဖစ္ပါတယ္။ သေဘာက o က အနည္းဆံုး ၁လံုးပါရတယ္။
တစ္လံုးထက္ပိုပါရင္လည္း ၿဖစ္တယ္။
|
?
|
သူရဲ
့ေရွမွာ ရိွေနတဲ့ စာလံုး(character) သို ့ စာလံုးအစုငယ္ (sub
expression) ေတြကို 0 or 1 အၾကိမ္အေရအတြက္ တိုက္ပါတယ္။ ဥပမာ - “do(es)?” က “do” and “does” ကို တိုက္ပါတယ္။ ? က {0,1} နဲ ့အတူတူပဲၿဖစ္ပါတယ္။ သေဘာက o က လံုး၀မပါရင္လည္းၿဖစ္တယ္။ တစ္လံုးတည္းပါရင္လည္း ၿဖစ္တယ္။
|
{n}
|
ဒီမွာ n က အႏုတ္ကိန္းမဟုတ္ရပါ။ n ၾကိမ္အေရအတြက္ အတိ အက် တိုက္ပါတယ္။ ဥပမာ - ‘o{2,}’ လို ့ဆိုရင္ “Bob” ထဲမွာ ရိွ တဲ့ o နဲ ့မတိုက္ပါဘူး။ ဒါေပမယ့္ “food” ထဲမွာရိွတဲ့ o ႏွစ္လံုးနဲ ့ ေတာ့ တိုက္ပါတယ္။
|
{n,}
|
ဒီမွာ n က အႏုတ္ကိန္းမဟုတ္ရပါ။ အနိမ့္ဆံုး n ၾကိမ္ အေရ အတြက္္နဲ ့ တိုက္ပါတယ္။ ဥပမာ - ‘o{2}’ လို ့ဆိုရင္ “Bob” ထဲမွာ ရိွ တဲ့ o နဲ ့မတိုက္ပါဘူး။ ဒါေပမယ့္ “fooooood” မွာရိွတဲ့ o အားလံုးနဲ ့ ေတာ့တိုက္ပါတယ္။ ‘o{1,}’ က အထက္မွာ ေဖၚၿပခဲ့တဲ့ ‘o+’ နဲ ့အတူတူပဲၿဖစ္ပါတယ္။
|
{n,m}
|
ဒီမွာ
n နဲ ့ m က အႏုတ္ကိန္းမဟုတ္ရပါ။ n က m ထက္ ငယ္ရင္ငယ္ ၊ မငယ္ရင္
ညီရပါမယ္ (n <= m)။ အနိမ့္ဆံုး n ၾကိမ္ ၊ အၿမင့္ဆံုး m ၾကိမ္
အေရအတြက္ နဲ ့့ တိုက္ပါတယ္။ ဥပမာ - ‘o{1,3}' ဟာ “fooooood” မွာရိွတဲ့ ပထမ o သံုးလံုးနဲ ့ တိုက္ပါတယ္။ ‘o{0,1}’ က အထက္မွာ ေဖၚၿပခဲ့တဲ့ ‘o?’ နဲ ့ အတူတူပဲၿဖစ္ပါတယ္။ “o{1,}” က အထက္မွာေဖၚၿပခဲ့တဲ့ ‘o+’ နဲ ့ တူၿပီး ၊ “o{၀,}” ကေတာ့့ ‘o*’ နဲ ့ အတူတူပဲၿဖစ္ပါတယ္။
|
?
|
ဒီ ? က (*,+,?,{n},{n,},{n,m}) တို
ရဲ ့ ေနာက္မွာ ခ်က္ခ်င္း ရိွေနတယ္ဆိုရင္ အဲဒီပံုစံကို non-greedy
pattern လုိ ့ေခၚပါ တယ္။ non-greedy pattern ဆိုတာ တုိက္စစ္တဲ့အခါ
နည္းႏိုင္ သမွ်နည္းေအာင္တုိက္စစ္ပါတယ္။ ပံုမွန္ ပံုစံ(pattern) က မ်ား
ႏိုင္သမွ်မ်ားေအာင္တုိက္စစ္ပါတယ္။ ဥပမာ - “oooo” ဆို တဲ့ စာအစဥ္ အတန္း (string) မွာ ၊ ‘o+?’ က ‘o’ တစ္လံုးတည္းနဲ ့ တိုက္စစ္ၿပီး ၊ ? မပါ တဲ့ ‘o+’ က ‘o’ အားလံုးနဲ ့တိုက္စစ္ပါတယ္။
|
.
|
“\n” (newline character) ကလြဲရင္ ‘.’ (dot) ကေလးဟာ စကာလံုးအားလံုးနဲ ့ တိုက္စစ္ပါတယ္။ “\n” ကိုပါ တိုက္စစ္ခ်င္ တယ္ဆိုရင္ေတာ့ ‘[\s\S]’ ဆိုတဲ့ ပံုစ(pattern) ံကို သံုးႏိုင္ပါတယ္။
|
x|y
|
သူက ‘ x ’ ဒါမွမဟုတ္ ‘ y ’ ကိုတိုက္စစ္ပါတယ္။ ဥပမာ- “z|food” ဟာ “z” ဒါမွမဟုတ္ “food” နဲ ့ တိုက္ပါတယ္။ “(z|f)ood” က်ေတာ့ “zood” ဒါမွမဟုတ္ “food” နဲ ့တိုက္ စစ္ပါတယ္။ “|” ဒီစာလံုးေလးက or (တစ္ခုမဟုတ္တစ္ခု) ဆိုတဲ့ အဓိပါယ္ရိွပါတယ္။
|
[xyz]
|
သူကေတာ့ စကားလံုးအစုပါပဲ။ ေဒါင့္ကြင္း([]) ထဲမွာ ရိွတဲ့ ဘယ္စကားလံုးနဲ ့ မဆို တိုက္စစ္ပါတယ္။ ဥပမာ- [abc] က
“plain” ထဲက “ a ” နဲ ့တိုက္စစ္ပါတယ္။
|
[^xyz]
|
သူကေတာ့
စကားလံုးအစုပါပဲ။ ေဒါင့္ကြင္း([]) ထဲမွာ ရိွတဲ့ စကားလံုးမ်ား နဲ
့မတူတဲ့ အၿခားစကားလံုးမ်ားကို တိုက္စစ္ ပါတယ္။ ဥပမာ- [^abc] က “plain”
ထဲက “ p ” ၊ “ l ” ၊ “ i ” ၊ “ n ” တိုက္စစ္ပါတယ္။ ^ က မဟုတ္ (not) ဆိုတဲ့ အဓိပါယ္ရိွ ပါတယ္။
|
[a-z]
|
သူကေတာ့ စကားလံုး အတိုင္းအတာ (range of characters) တစ္ခုပါပဲ။ဥပမာ - [a-m] ဟာ a နဲ ့ m ၾကားမွာရိွတဲ့ မည္သည့္ စကားလံုးကို မဆို တိုက္စစ္ပါ တယ္။
|
[^a-z]
|
သူကေတာ့ စကားလံုး အတိုင္းအတာ (range of characters) တစ္ခုပါပဲ။ဥပမာ - [^a-m] ဟာ a နဲ ့ m ၾကားမွာရိွတဲ့ စကားလံုးမ်ားမွ လြဲ ၿပီး မည္သည့္စကားလံုးနဲ ့မဆို တိုက္စစ္ပါ တယ္။^ က မဟုတ္ (not) ဆိုတဲ့ အဓိပါယ္ရိွ ပါတယ္။
|
|
ဆက္ရန္။
ရည္ညြန္း။ ။ MSDN, Wikipedia - the free encyclopedia, Google
့့့အာေကလာ(Akela)
No comments:
Post a Comment