เบเบตเปเปเบกเปเบเบเปเบฒเบชเบฑเปเบ perlfaq6 เบเบตเปเบชเบฒเบกเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเปเบเปเปเบ OnWorks เบเบนเปเปเบซเปเบเปเบฅเบดเบเบฒเบเปเบฎเบเบเบดเปเบเบเบฃเบตเปเบเบเปเบเปเบซเบเบถเปเบเปเบเบซเบผเบฒเบเปเบเปเบญเบเปเบฎเบฑเบเบงเบฝเบเบญเบญเบเปเบฅเบเปเบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบเบฑเปเบ Ubuntu Online, Fedora Online, Windows online emulator เบซเบผเบท MAC OS online emulator
เปเบเบเบเบฒเบ:
NAME
perlfaq6 - เบเบฒเบเบชเบฐเปเบเบเบญเบญเบเบเบปเบเบเบฐเบเบด
เปเบงเบตเบเบฑเปเบ
5.021009 Version
เบฅเบฒเบเบฅเบฐเบญเบฝเบ
เบเบฒเบเบเบตเปเปเบเบฑเบเปเบฅเบทเปเบญเบเปเบเบเบเบตเปเปเบฅเบฑเบเบเปเบญเบเปเบเบฒเบฐเบงเปเบฒเบชเปเบงเบเบเบตเปเปเบซเบผเบทเบญเบเบญเบ FAQ เปเบกเปเบเปเบเบฑเบกเปเบเบเปเบงเบเบเปเบฒเบเบญเบ
เบเปเบฝเบงเบเปเบญเบเบเบฑเบเบเบฒเบเบชเบฐเปเบเบเบญเบญเบเปเบเบฑเบเบเบปเบเบเบฐเบเบด. เบเบปเบงเบขเปเบฒเบ, เบเบฒเบเบเบญเบเบฅเบฐเบซเบฑเบ URL เปเบฅเบฐเบเบงเบเปเบเบดเปเบเบงเปเบฒเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบ
เปเบกเปเบเบเบปเบงเปเบฅเบเบชเบฒเบกเบฒเบเบเบฑเบเบเบฒเบเบเบฑเบเบเบฒเบเบชเบฐเปเบเบเบญเบญเบเปเบเบฑเบเบเบปเบเบเบฐเบเบด, เปเบเปเบเปเบฒเบเบญเบเปเบซเบผเบปเปเบฒเบเบฑเปเบเปเบกเปเบเบเบปเบเปเบซเบฑเบเบขเบนเปเบเปเบญเบเบญเบทเปเบ
เปเบเปเบญเบเบฐเบชเบฒเบเบเบตเป (เปเบ perlfaq9: "เบเปเบญเบเบเบฐเบเบญเบเบฅเบฐเบซเบฑเบ เบซเบผเบทเบชเปเบฒเบ %-encodings เปเบซเบผเบปเปเบฒเบเบฑเปเบเบขเบนเปเปเบเปเบงเบฑเบเปเบเปเปเบเบงเปเบ"
เปเบฅเบฐ perlfaq4: "เบเปเบญเบเบเบฐเบเปเบฒเบเบปเบเปเบเปเปเบเบงเปเบเบงเปเบฒ scalar เปเบเบฑเบเบเบปเบงเปเบฅเบ / เบเบฑเบเบซเบกเบปเบ / integer / float", เบเบฐเปเบเบฑเบ.
เบเบฑเบเปเบเบ).
เบงเบดเบเบตเบเบฒเบ เบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเป I เบซเบงเบฑเบเบงเปเบฒ to เบเบฒเบเบเปเบฒเปเบเป เบเบปเบเบเบฐเบเบด expressions เปเบเบเบเปเปเบกเบตเบเบฒเบ เบเบฒเบเบชเปเบฒเบ เบเบดเบเบเบปเบ เปเบฒเบ เปเบฅเบฐ เบเปเปเบชเบฒเบกเบฒเบเบฎเบฑเบเบชเบฒเปเบเป เบฅเบฐเบซเบฑเบ?
เบชเบฒเบกเปเบเบฑเบเบเบดเบเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบซเปเบเบฒเบเบชเบฐเปเบเบเบญเบญเบเปเบเบฑเบเบเบปเบเบเบฐเบเบดเบฎเบฑเบเบชเบฒเปเบฅเบฐเปเบเบปเปเบฒเปเบเปเบเป.
เบเปเบฒเปเบซเบฑเบเบเบญเบ Regex
เบญเบฐเบเบดเบเบฒเบเบชเบดเปเบเบเบตเปเบเปเบฒเบเบเปเบฒเบฅเบฑเบเปเบฎเบฑเบเปเบฅเบฐเบงเบดเบเบตเบเบตเปเบเปเบฒเบเบเปเบฒเบฅเบฑเบเปเบฎเบฑเบเบกเบฑเบ, เปเบเบเปเบเปเบเปเบฒเบเบดเบเปเบซเบฑเบ Perl เบเบปเบเบเบฐเบเบด.
# เบเปเบฝเบเปเบชเบฑเปเบเปเบเบฑเบเบเปเบฒเบเปเบฒเบญเบดเบ, เบเปเปเบฒเบชเบญเบเปเบกเบฑเบ, เปเบฅเบฐ
# เบเบปเบงเปเบฅเบเบเบญเบเบเบปเบงเบญเบฑเบเบชเบญเบเปเบเบชเปเบงเบเบเบตเปเปเบซเบผเบทเบญเบเบญเบเปเบเบง
s/^(\w+)(.*)/ lc($1). " : " . length($2) /meg;
เบเปเบฒเปเบซเบฑเบเบเบฒเบเปเบ Regex
เบเบปเบงเปเบเปเปเบ "/x" เปเบฎเบฑเบเปเบซเปเบเปเบญเบเบซเบงเปเบฒเบเบเบทเบเบฅเบฐเปเบฅเบตเบเปเบเบฎเบนเบเปเบเบ regex (เบเบปเบเปเบงเบฑเปเบเปเบ a
เบซเปเบญเบเบฎเบฝเบเบเบปเบงเบญเบฑเบเบชเบญเบเปเบฅเบฐเบชเบฐเบเบฒเบเบเบตเปเบญเบทเปเบเปเบเปเบฒเบเบงเบเบซเบเปเบญเบ), เปเบฅเบฐเบเบฑเบเบญเบฐเบเบธเบเบฒเบเปเบซเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเปเบเปเบฒเปเบซเบฑเบเบเบปเบเบเบฐเบเบด
เบขเบนเปเบเบตเปเบเบฑเปเบ. เบเบฒเบกเบเบตเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบเบดเบเบเบฐเบเบฒเบเบฒเบ, เบเปเบญเบเบซเบงเปเบฒเบเปเบฅเบฐเบเปเบฒเปเบซเบฑเบเบเปเบงเบเบซเบผเบฒเบ.
"/x" เปเบซเปเบเปเบฒเบเปเบเบตเบเบญเบฑเบเบเบตเป:
s{<(?:[^>'"]*|".*?"|'.*?')+>}{}gs;
เปเบเบปเปเบฒเปเบเปเบเบเบตเป:
s{ < # เบงเบปเบเปเบฅเบฑเบเบกเบธเบกเปเบเบตเบ
(?: # non-backreffing grouping paren
[^>'"] * # 0 เบซเบผเบทเบซเบผเบฒเบเบเบงเปเบฒเบชเบดเปเบเบเบตเปเบเปเปเปเบกเปเบ > เบซเบผเบท ' เบซเบผเบท "
| # เบซเบผเบทเบญเบทเปเบเป
".*?" # เบชเปเบงเบเบฅเบฐเบซเบงเปเบฒเบเบงเบปเบเบขเบทเบกเบเบนเป (เบเบฒเบเบเบฑเบเบเบนเปเบเบตเปเบเบตเปเบเปเบฒเบ)
| # เบซเบผเบทเบญเบทเปเบเป
'.*?' # เบชเปเบงเบเบฅเบฐเบซเบงเปเบฒเบเบเบณเปเบงเบปเปเบฒเบเบฝเบง (เบเบปเบเบเบฑเบเบเบตเปเบเบตเปเบเปเบฒเบ)
) + # เบเบฑเบเบซเบกเบปเบเบเบตเปเปเบเบตเบเบเบถเปเบเบซเบเบถเปเบเบซเบผเบทเบซเบผเบฒเบเบเบฑเปเบ
> # เบงเบปเบเปเบฅเบฑเบเบเบดเบ
}{}gsx; # เปเบเบเบเบตเปเบเปเปเบกเบตเบซเบเบฑเบ, ie เบฅเบถเบ
เบกเบฑเบเบเบฑเบเบเปเปเบเบฑเบเปเบเบเบซเบผเบฒเบเปเบเบฑเบ prose, เปเบเปเบกเบฑเบเปเบเบฑเบเบเบฐเปเบซเบเบเบซเบผเบฒเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบญเบฐเบเบดเบเบฒเบ
เบเบงเบฒเบกเบซเบกเบฒเบเบเบญเบเปเบเปเบฅเบฐเบชเปเบงเบเบเบญเบเบฎเบนเบเปเบเบ.
เบเบปเบงเบเบฑเปเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ
เปเบเบเบฐเบเบฐเบเบตเปเบเบปเบเบเบฐเบเบดเปเบฅเปเบงเบเบงเบเปเบฎเบปเบฒเบเบดเบเปเบเบดเบเบฎเบนเบเปเบเบเบเบตเปเบเบทเบเบเปเบฒเบเบฑเบเบเปเบงเบเบเบปเบงเบญเบฑเบเบชเบญเบ "/", เบเบงเบเบกเบฑเบเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเป
เบเบทเบเบเปเบฒเบเบฑเบเปเบเบเปเบเบทเบญเบเบเบธเบเบเบปเบงเบญเบฑเบเบชเบญเบ. perlre เบญเบฐเบเบดเบเบฒเบเบเบตเป. เบเบปเบงเบขเปเบฒเบ, "s///"
เบเปเบฒเบเปเบเบดเบเปเบเปเบงเบปเบเปเบฅเบฑเบเปเบเบฑเบเบเบปเบงเบเบฑเปเบ. เบเบฒเบเปเบฅเบทเบญเบเบเบปเบงเบเบฑเปเบเบญเบทเปเบเบชเบฒเบกเบฒเบเบซเบผเบตเบเปเบงเบฑเปเบเบเบฒเบเบญเปเบฒเบเบญเบตเบ
เบเบปเบงเบเบฑเปเบเบเบฒเบเปเบเบฎเบนเบเปเบเบ:
s/\/ usr\/เบเปเบญเบเบเบดเปเบ/\/ usr\/share/g; # เบเบฒเบเปเบฅเบทเบญเบเบเบปเบงเบเบฑเปเบเบเบตเปเบเปเปเบเบต
s#/ usr / เบเปเบญเบเบเบดเปเบ#/ usr / share#g; # เบเบตเบเบงเปเบฒ
เบเบฒเบเบเปเบฒเปเบเปเบเบปเบงเบเปเบฒเบเบปเบเบเบฒเบเบเบฑเบเบเบนเปเบขเปเบฒเบเบกเบตเปเบซเบเบเบปเบเบชเบฒเบกเบฒเบเบญเปเบฒเบเปเบเปเบซเบผเบฒเบเบเบงเปเบฒเปเบเบปเปเบฒ:
s{/ usr / เบเปเบญเบเบเบดเปเบ /}{/ usr / share}g; # เบเบฑเบเบเบตเบเบงเปเบฒ
เบเปเบญเบ เบกเบต เบเบฑเบเบซเบฒเปเบเบเบฒเบ เบเบฒเบเบเบฑเบเบเบนเป เปเบเปเบฅเบเบฐ เปเบเบตเปเบกเปเบเบตเบก เบเปเบงเบฒ เบซเบเบถเปเบ เปเบชเบฑเปเบ. เปเบกเปเบเบซเบเบฑเบ เบเบดเบเบเป?
เบเปเปเบงเปเบฒเปเบเบปเปเบฒเบเปเปเบกเบตเบซเบผเบฒเบเบเบงเปเบฒเปเบถเปเบเปเบชเบฑเปเบเปเบเบชเบฐเบเบฃเบดเบเบเบตเปเปเบเบปเปเบฒเบเบณเบฅเบฑเบเปเบเบดเปเบเบขเบนเป (เบญเบฒเบเบเบฐเปเบเบฑเบ), เบซเบผเบท
เบญเบทเปเบ, เปเบเบปเปเบฒเบเปเปเปเบเปเปเบเปเบเบปเบงเปเบเปเปเบเบเบตเปเบเบทเบเบเปเบญเบเบเบฒเบกเบฎเบนเบเปเบเบเบเบญเบเปเบเบปเปเบฒ (เบญเบฒเบเบเบฐเปเบเบฑเบ).
เบกเบตเบซเบผเบฒเบเบงเบดเบเบตเบเบตเปเบเบฐเปเบญเบปเบฒเบเปเปเบกเบนเบเบซเบผเบฒเบเปเบเบงเปเบเบปเปเบฒเปเบเบชเบฐเบเบฃเบดเบ. เบเปเบฒเบเปเบฒเบเบเปเบญเบเบเบฒเบเปเบซเปเบกเบฑเบเปเบเบตเบเบเบถเปเบ
เบญเบฑเบเบเบฐเปเบเบกเบฑเบเปเบเบเบฐเบเบฐเบเบตเปเบญเปเบฒเบเบเบฒเบเบเปเบญเบเบเปเปเบกเบนเบ, เบเปเบฒเบเบเปเบญเบเบเบฒเบเบเบฑเปเบ $/ (เบญเบฒเบเบเบฐเปเบเบฑเบ '' เบชเปเบฒเบฅเบฑเบเบงเบฑเบเบซเบผเบท
"undef" เบชเปเบฒเบฅเบฑเบเปเบเบฅเปเบเบฑเบเบซเบกเบปเบ) เปเบเบทเปเบญเปเบฎเบฑเบเปเบซเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบญเปเบฒเบเบซเบผเบฒเบเบเบงเปเบฒเบซเบเบถเปเบเปเบเบงเปเบเปเบงเบฅเบฒเบเบฑเปเบ.
เบญเปเบฒเบ perlre เปเบเบทเปเบญเบเปเบงเบเปเบซเปเบเปเบฒเบเบเบฑเบเบชเบดเบเปเบเบงเปเบฒ "/s" เปเบฅเบฐ "/m" (เบซเบผเบทเบเบฑเบเบชเบญเบ) เบเบตเปเบเปเบฒเบเบญเบฒเบเบเบฐเบเปเบญเบเบเบฒเบเปเบเป:
"/s" เบญเบฐเบเบธเบเบฒเบเปเบซเปเบเบธเบเปเบเบทเปเบญเบฅเบงเบกเปเบญเบปเบฒเปเบชเบฑเปเบเปเบซเบกเป, เปเบฅเบฐ "/m" เบญเบฐเบเบธเบเบฒเบเปเบซเป cart เปเบฅเบฐเปเบเบดเบเปเบเบฅเบฒเบเบปเบเบเบฑเบเบเบฑเบ a.
newline, เบเปเปเบเบฝเบเปเบเปเบขเบนเปเปเบเบเบญเบเบเปเบฒเบเบเบญเบเบชเบฒเบ. เบเปเบฒเบ เบเบณ เปเบเบฑเบเบเปเบญเบเบฎเบฑเบเบเบฐเบเบฑเบเบงเปเบฒเบเปเบฒเบเปเบเปเบเบปเบงเบเบดเบเปเบฅเปเบง
เบกเบตเบชเบฒเบเบซเบผเบฒเบเปเบเบงเบขเบนเปเปเบเบเบฑเปเบ.
เบเบปเบงเบขเปเบฒเบ, เปเบเบเบเบฒเบเบเบตเปเบเบงเบเบเบปเบเบเปเบฒเบเบตเปเบเปเปเบฒเบเบฑเบ, เปเบเบดเบเปเบกเปเบเบงเปเบฒเปเบเปเบงเบฅเบฒเบเบตเปเบเบงเบเปเบเบปเบฒเบเบฐเบซเบเบฒเบเปเบชเบฑเปเบเปเบเปเบ (เปเบเป
เบเปเปเปเบกเปเบเบงเบฑเบ). เบเบปเบงเบขเปเบฒเบเบเบตเป, เบเบงเบเปเบฎเบปเบฒเบเปเปเบเปเบญเบเบเบฒเบ "/s" เปเบเบฒเบฐเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเบเปเปเปเบเปเปเบเปเบเบธเบเปเบ a
เบเบฒเบเบชเบฐเปเบเบเบญเบญเบเบเบปเบเบเบฐเบเบดเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบเบเบตเปเบเบฐเบเปเบฒเบกเปเบชเบฑเปเบเบเบฒเบเปเบเบ. เบเบงเบเปเบฎเบปเบฒเบเปเปเบเปเบญเบเบเบฒเบ "/m" เปเบเบฒเบฐเบงเปเบฒ
เบเบงเบโเปเบฎเบปเบฒโเบเปเปโเบเปเบญเบโเบเบฒเบ cart เบซเบผเบทโเปเบเบดเบโเปเบโเบฅเบฒโเบเบตเปโเบเบฐโเบเบปเบโเบเบฑเบโเปเบโเบเบธเบโเปเบโเบซเบเบถเปเบโเปเบโเบเบฑเบโเบเบถเบโเบเบฒเบโเบเปเปโเปเบโเบเบฑเบโเบชเบฒเบโเปเบซเบกเปโ.
เปเบเปเบกเบฑเบเบเปเบฒเปเบเบฑเบเบเบตเป $/ เบเบทเบเบเบฑเปเบเปเบเบฑเบเบชเบดเปเบเบญเบทเปเบเบเบตเปเบเปเปเปเบกเปเบเบเปเบฒเปเบฅเบตเปเบกเบเบปเปเบ, เบเปเบฒเบเปเปเบเบฑเปเบเบเบฑเปเบเบเบงเบเปเบฎเบปเบฒเบเบฐเบเปเป
เบเบปเบงเบเบดเบเปเบฅเปเบงเปเบเบตเบเบกเบตเบเบฑเบเบเบถเบเบซเบผเบฒเบเปเบเบงเบญเปเบฒเบเบขเบนเปเปเบ.
$/ = ''; # เบญเปเบฒเบเบเบฑเบเบซเบเปเปเปเปเบฒ, เบเปเปเปเบกเปเบเปเบเปเปเบเบงเบเบฝเบง
เปเบเบเบฐเบเบฐเบเบตเป ( <> ) {
เปเบเบเบฐเบเบฐเบเบตเป ( /\b([\w'-]+)(\s+\g1)+\b/gi ) { # เบเปเบฒเปเบฅเบตเปเบกเบเบปเปเบ alpha
เบเบดเบก "เบเปเปเบฒเบเบฑเบ $1 เบขเบนเปเบงเบฑเบ $.\n";
}
}
เบเบตเปเปเบกเปเบเบฅเบฐเบซเบฑเบเบเบฒเบเบขเปเบฒเบเบเบตเปเบเบญเบเบซเบฒเบเบฐเปเบซเบเบเบเบตเปเปเบฅเบตเปเบกเบเบปเปเบเบเปเบงเบ "เบเบฒเบ" (เปเบเบดเปเบเบเบฐเบเบทเบเบเปเบฒเบฅเบฒเบเปเบเบ
mailers เบซเบผเบฒเบ):
$/ = ''; # เบญเปเบฒเบเบเบฑเบเบซเบเปเปเปเปเบฒ, เบเปเปเปเบกเปเบเปเบเปเปเบเบงเบเบฝเบง
เปเบเบเบฐเบเบฐเบเบตเป ( <> ) {
เปเบเบเบฐเบเบฐเบเบตเป ( /^From /gm ) { # /m เปเบฎเบฑเบเปเบซเป ^ เบเบปเบเบเบฑเบ \n
เบเบดเบก "เบเปเบฒเบกเบฒเบเบฒเบเบงเบฑเบ $.\n";
}
}
เบเบตเปเปเบกเปเบเบฅเบฐเบซเบฑเบเบเบตเปเบเบญเบเบซเบฒเบเบธเบเบขเปเบฒเบเบฅเบฐเบซเบงเปเบฒเบ START เปเบฅเบฐ END เปเบเบงเบฑเบ:
undef $/; # เบญเปเบฒเบเปเบเปเบเบฅเปเบเบฑเบเบซเบกเบปเบ, เบเปเปเบเบฝเบเปเบเปเบซเบเบถเปเบเปเบเบงเบซเบผเบทเบงเบฑเบ
เปเบเบเบฐเบเบฐเบเบตเป ( <> ) {
เปเบเบเบฐเบเบฐเบเบตเป ( /START.*?)END/sgm ) { # /s เปเบฎเบฑเบเปเบซเป . เปเบชเบฑเปเบโเบเบฒเบโเปเบเบโเบเปเบฒเบกโ
เบเบดเบก "$1\n";
}
}
เบงเบดเบเบตเบเบฒเบ เบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเป I เบเบถเบ เบญเบญเบ เบชเบฒเบ เบฅเบฐเบซเบงเปเบฒเบ เบชเบญเบ เบฎเบนเบเปเบเบเบเบฒเบ เบเบตเป เบกเบต เบเปเบงเบเบเบปเบเปเบญเบ on เบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ เบชเบฒเบ?
เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเป Perl's exotic ".." operator (เบเบฑเบเบเบถเบเปเบงเปเปเบ perlop):
perl -ne 'เบเบดเบกเบเปเบฒ /START/ .. /END/' file1 file2 ...
เบเปเบฒเบเปเบฒเบเบเปเบญเบเบเบฒเบเบเปเปเบเบงเบฒเบกเปเบฅเบฐเบเปเปเปเบกเปเบเปเบชเบฑเปเบ, เบเปเบฒเบเบเบฐเปเบเป
perl -0777 -ne 'เบเบดเบก "$1\n" เปเบเบเบฐเบเบฐเบเบตเป /START.*?)END/gs' file1 file2 ...
เปเบเปเบเปเบฒเบเปเบฒเบเบเปเบญเบเบเบฒเบเบเบฒเบเบเบฐเบเบปเบเบเบปเบงเปเบเบเบเปเบญเบเบเบฑเบเบเบญเบ "START" เบเบปเบเปเบเบดเบ "END", เบเปเบฒเบเบเบฐเปเบฅเปเบเบเบถเปเบเบเปเปเบเปเบฒเบ
เบเบฑเบเบซเบฒเบเบตเปเบญเบฐเบเบดเบเบฒเบเปเบงเปเปเบเบเปเบฒเบเบฒเบกเปเบเบเบฒเบเบเบตเปเบเปเบฝเบงเบเบฑเบเบเบฒเบเบเบฑเบเบเบนเปเบเปเปเบเบงเบฒเบกเบเบตเปเบชเบปเบกเบเบนเบ.
เบเบตเปเปเบกเปเบเบเบปเบงเบขเปเบฒเบเบญเบทเปเบเบเบญเบเบเบฒเบเปเบเป "..":
เปเบเบเบฐเบเบฐเบเบตเป (<>) {
$in_header เบเบญเบเบเปเบญเบ = 1 .. /^$/;
$in_body เบเบญเบเบเปเบญเบ = /^$/ .. eof;
# เบเบฝเบงเบเบตเปเปเบฅเบทเบญเบเบฅเบฐเบซเบงเปเบฒเบเบเบงเบเบกเบฑเบ
} เบชเบทเบเบเปเป {
$. = 0 เบเปเบฒ eof; # เปเบเปเปเบ $.
}
เบงเบดเบเบตเบเบฒเบ do I เบเบฒเบเปเบเปเบเบเบฑเบ XML, HTML, or เบญเบทเปเบเป เบเบตเปเบฎเปเบฒเบ, ugly เบชเบดเปเบเบเบตเป เบเบฑเบ a regex?
เบขเปเบฒเปเบเป regexes. เปเบเปเปเบกเบเบนเบเปเบฅเบฐเบฅเบทเบกเบเปเบฝเบงเบเบฑเบเบเบฒเบเบชเบฐเปเบเบเบญเบญเบเบเบปเบเบเบฐเบเบด. เปเบเป
XML::LibXML, HTML::TokeParser เปเบฅเบฐ HTML::เปเบกเบเบนเบ TreeBuilder เปเบกเปเบเบเบฒเบเปเบฅเบตเปเบกเบเบปเปเบเบเบตเปเบเบต, เปเบเบดเบเปเบกเปเบเบงเปเบฒเปเบเปเบฅเบฐเบญเบฑเบ.
namespace เบกเบตเปเบกเบเบนเบ parsing เบญเบทเปเบเปเบเบดเปเบชเบเบชเปเบฒเบฅเบฑเบเบงเบฝเบเบเบฒเบเบชเบฐเปเบเบฒเบฐเปเบเบซเบเบถเปเบเปเบฅเบฐเบงเบดเบเบตเบเบฒเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเบเบญเบ
เปเบฎเบฑเบเบกเบฑเบ. เปเบฅเบตเปเบกเบเบปเปเบเบเบตเป CPAN Search (http://metacpan.org/> ) เปเบฅเบฐเบชเบดเปเบเบกเบฐเบซเบฑเบเปเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเบซเบกเบปเบ
เบเบฐเบเบฒเบเบปเบเปเบเปเปเบฎเบฑเบเบชเปเบฒเบฅเบฑเบเบเปเบฒเบเปเบฅเปเบง! :)
I เปเบญเบปเบฒเปเบเปเบชเป a เบเบปเบเบเบฐเบเบด เบเบฒเบเบชเบฐเปเบเบเบญเบญเบ เปเบเบปเปเบฒเปเบเปเบ $/ เปเบเป it เบเปเปเปเบเป เปเบฎเบฑเบเบงเบฝเบ. เปเบกเปเบเบซเบเบฑเบ เบเบดเบเบเป?
$/ เบเปเบญเบเปเบเบฑเบเบชเบฐเบเบฃเบดเบ. เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเปเบเบปเบงเบขเปเบฒเบเปเบซเบผเบปเปเบฒเบเบตเปเบเปเบฒเบเปเบฒเบเบเปเบญเบเบเบฒเบเปเบฎเบฑเบเปเบเบงเบเบตเปเปเบเปเป.
เบเปเบฒโเบซเบฒเบโเบเปเบฒเบโเบกเบต File::Stream, เบเบตเปโเปเบกเปเบโเบเปเบฒเบโเบเบฒเบ.
เปเบเป File::Stream;
$stream = เปเบเบฅเป::เบชเบฐเบเบฃเบตเบก->เปเปเป(
$filehandle,
เบเบปเบงเปเบเบ => qr/\s*,\s*/,
);
เบเบดเบก "$_\n" เปเบเบเบฐเบเบฐเบเบตเป <$stream>;
เบเปเบฒโเบซเบฒเบโเบงเปเบฒโเบเปเบฒเบโเบเปเปโเบกเบต File::Stream, เบเปเบฒเบโเบเบฐโเบเปเบญเบโเปเบฎเบฑเบโเบงเบฝเบโเบซเบผเบฒเบโเปเบฅเบฑเบโเบเปเบญเบโ.
เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเปเบฎเบนเบเปเบเบเบชเบตเปเบเบฒเบเปเบเปเบเบฝเบเบเบญเบ sysread เปเบเบทเปเบญเบชเบทเบเบเปเปเปเบเบตเปเบกเปเบชเป buffer. เบซเบผเบฑเบโเบเบฒเบโเบเบตเปโเบเปเบฒเบ
เปเบเบตเปเบกเปเบชเป buffer, เบเปเบฒเบเบเบงเบเปเบเบดเปเบเบงเปเบฒเบเปเบฒเบเบกเบตเปเบชเบฑเปเบเบเบปเบเบเปเบงเบเบชเบปเบกเบเบนเบ (เปเบเบเบเปเบฒเปเบเปเบเบฒเบเบชเบฐเปเบเบเบญเบญเบเบเบปเบเบเบฐเบเบดเบเบญเบเบเปเบฒเบ).
เบเปเบญเบเบเบดเปเบ $_ = "";
while(sysread FH, $_, 8192, length ) {
เปเบเบเบฐเบเบฐเบเบตเป(s/^((?s).*?) your_pattern// ) {
$record เบเบญเบเบเปเบญเบ = $1;
#เปเบฎเบฑเบเบชเบดเปเบเบเบญเบเบขเบนเปเบเบตเป.
}
}
เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบฎเบฑเบเบชเบดเปเบเบเบฝเบงเบเบฑเบเบเบฑเบ foreach เปเบฅเบฐเบเบฒเบเปเบเปเบเบเบฑเบเปเบเบเปเบเปเบเบธเบ c เปเบฅเบฐเบชเบฐเบกเป \ G, เบเปเบฒ
เบเปเบฒเบเบเปเปเบชเบปเบเปเบเปเบเบฅเปเบเบฑเบเบซเบกเบปเบเบเบญเบเบเปเบฒเบเบขเบนเปเปเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒเปเบเบเบญเบเบเปเบฒเบ.
เบเปเบญเบเบเบดเปเบ $_ = "";
while(sysread FH, $_, 8192, length ) {
foreach my $record ( m/\G((?s).*?)your_pattern/gc ) {
#เปเบฎเบฑเบเบชเบดเปเบเบเบญเบเบขเบนเปเบเบตเป.
}
substr($_, 0, pos ) = "" เบเปเบฒ pos;
}
เบงเบดเบเบตเบเบฒเบ do I เบเบปเบเปเบเบ case-insensitively on เปเบเป LHS เปเบเบเบฐเบเบฐเบเบตเป เบเบปเบเบเบฑเบเบฎเบฑเบเบชเบฒ เบเปเบฅเบฐเบเบต on เปเบเป RHS?
เบเบตเปเปเบกเปเบเบเบฒเบเปเบเปเปเบ Perlish เบเบตเปเบซเบเปเบฒเบฎเบฑเบเปเบเบ Larry Rosler. เบกเบฑเบเบเบธเบเบเบปเปเบเบเบธเบเบชเบปเบกเบเบฑเบเบเบญเบ bitwise xor on
เบชเบฐเบเบฃเบดเบ ASCII.
$_= "เบเบตเปเปเบกเปเบเบเปเบฅเบฐเบเบต TEsT";
$old = 'เบเบปเบเบชเบญเบ';
$new = 'เบเบงเบฒเบกเบชเบณเปเบฅเบฑเบ';
s{(\Q$old\E)}
{ uc $ เปเบซเบกเป | (uc $1 ^ $1).
(uc(substr $1, -1) ^ substr $1, -1) x
(เบเบงเบฒเบกเบเบฒเบง($เปเปเป) - เบเบงเบฒเบกเบเบฒเบง $1)
}เปเบเบฑเปเบ;
เบเบดเบก;
เปเบฅเบฐเบเบตเปเปเบกเปเบเปเบเบฑเบ subroutine, modeled เบซเบผเบฑเบเบเบฒเบเบเปเบฒเบเปเบเบดเบเบเบตเป:
sub preserve_case {
เบเบญเบเบเปเบญเบ ($old, $new) = @_;
my $mask = uc $old ^ $old;
uc $ เปเบซเบกเป | $เปเปเบฒเบเบฒเบ.
substr($mask, -1) x (length($new) - length($old))
}
$string = "เบเบตเปเปเบกเปเบเบเปเบฅเบฐเบเบต TEsT";
$string =~ s/(test)/preserve_case($1, "success")/egi;
เบเบดเบก "$string\n";
เบเบตเปเบเบดเบก:
เบเบตเปเปเบกเปเบเบเปเบฅเบฐเบเบต SucCESS
เปเบโเบเบฒโเบเบฐโเปเบเบฑเบโเบเบฒเบโเปเบฅเบทเบญเบโ, เปเบเบทเปเบญโเบฎเบฑเบโเบชเบฒโเบเปโเบฅเบฐโเบเบตโเบเบญเบโเบเปเบฒโเบเบปเบโเปเบเบโเบเปเบฒโเบซเบฒเบโเบงเปเบฒโเบกเบฑเบโเปเบกเปเบโเบเบฒเบงโเบเบงเปเบฒโ
เบเบปเปเบเบชเบฐเบเบฑเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเปเบฅเบฐเบซเบฑเบเบเบตเป, เปเบเบ Jeff Pinyan:
sub preserve_case {
เบเบญเบเบเปเบญเบ ($from, $to) = @_;
my ($lf, $lt) = เบเบงเบฒเบกเบเบฒเบงเปเบเบเบเบตเป, @_;
เบเปเบฒ ($lt < $lf) { $from = substr $from, 0, $lt }
else { $from .= substr $to, $lf }
เบเบฑเบเบเบทเบ uc $to | ($from ^uc $from);
}
เบเบตเปเบเปเบฝเบเบเบฐเปเบซเบเบเปเบเบฑเบ "เบเบตเปเปเบกเปเบเบเปเบฅเบฐเบเบต SUcCess."
เบเบฝเบเปเบเปเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบงเปเบฒเบเบฑเบเบเบฝเบเปเบเบฅเปเบเบฅเบก C เบชเบฒเบกเบฒเบเบเบฝเบ C เปเบเบเบฒเบชเบฒเบเบฒเบเบเบฝเบเปเบเบผเปเบเบผเบกเปเบเบเปเปเบเบฒเบก, เบเปเบฒเบเปเบฒเบเบเปเบญเบเบเบฒเบ a
เบเบฒเบเปเบเปเปเบ C-like เบซเบผเบฒเบ, script เบเปเปเปเบเบเบตเปเปเบฎเบฑเบเปเบซเปเบเบฒเบเบเบปเบเปเบเบเบกเบตเบเปเบฅเบฐเบเบตเบเบฝเบงเบเบฑเบ,
เบเบปเบเบซเบกเบฒเบเบชเบฐเบเบฑเบเปเบเบเบเบปเบเบซเบกเบฒเบ, เปเบเบฑเบเบเบปเปเบเบชเบฐเบเบฑเบ. (เบกเบฑเบเบเบฑเบเปเบเบตเบเบเบถเปเบเบเบตเปเบเบฐเบเปเบฒเปเบเบตเบเบเบฒเบเบเบฐเบกเบฒเบ 240% เบเปเบฒเบเบงเปเบฒ
เบเบฒเบเปเบเปเปเบ Perlish เปเบฅเปเบ.) เบเปเบฒเบเบฒเบเบเบปเบเปเบเบเบกเบตเบเบปเบงเบญเบฑเบเบชเบญเบเบซเบผเบฒเบเบเบงเปเบฒเบชเบฐเบเบฃเบดเบ
เปเบเบ, เบเปเบฅเบฐเบเบตเบเบญเบเบเบปเบงเบญเบฑเบเบชเบญเบเบชเบธเบเบเปเบฒเบเปเบกเปเบเปเบเปเบชเปเบฒเบฅเบฑเบเบชเปเบงเบเบเบตเปเปเบซเบผเบทเบญเบเบญเบเบเบฒเบเบเบปเบเปเบเบ.
# เบเบปเปเบเบชเบฐเบเบฑเบเปเบเบ Nathan Torkington, เบเบงเบเปเบเบ Jeffrey Friedl
#
sub preserve_case
{
เบเบญเบเบเปเบญเบ ($old, $new) = @_;
$state เบเบญเบเบเปเบญเบ = 0; # 0 = เบเปเปเบกเบตเบเบฒเบเบเปเบฝเบเปเบเบ; 1 = lc; 2 = เบญเบ
เบเบญเบเบเปเบญเบ ($i, $oldlen, $newlen, $c) = (0, length($old), length($new));
$len เบเบญเบเบเปเบญเบ = $oldlen < $newlen ? $oldlen : $newlen;
เบชเปเบฒเบฅเบฑเบ ($i = 0; $i < $len; $i++) {
เบเปเบฒ ($c = substr($old, $i, 1), $c =~ /[\W\d_]/) {
$state = 0;
} elsif (lc $c eq $c) {
substr($new, $i, 1) = lc(substr($new, $i, 1));
$state = 1;
} else {
substr($new, $i, 1) = uc(substr($new, $i, 1));
$state = 2;
}
}
# เบเบปเบเบเบฑเบเบญเบฑเบเปเปเปเบเบตเปเบเบฑเบเปเบซเบผเบทเบญ (เปเบเบฒเบฐเบญเบฑเบเปเปเปเบเบฒเบงเบเบงเปเบฒเปเบเบปเปเบฒ)
เบเปเบฒ ($newlen> $oldlen) {
เบเปเบฒ ($state == 1) {
substr($new, $oldlen) = lc(substr($new, $oldlen));
} elsif ($state == 2) {
substr($new, $oldlen) = uc(substr($new, $oldlen));
}
}
เบเบฑเบเบเบทเบ $new;
}
เบงเบดเบเบตเบเบฒเบ เบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเป I เปเบฎเบฑเบเปเบซเป "\w" เบเบฒเบเปเบเปเบเบเบฑเบ เปเบซเปเบเบเบฒเบ เบฅเบฑเบเบชเบฐเบเบฐ เบเบธเบ?
เปเบชเป "เปเบเปเบเปเบญเบเบเบดเปเบ;" เปเบ script เบเบญเบเบเปเบฒเบ. เบซเปเบญเบเบฎเบฝเบเบเบปเบงเบญเบฑเบเบชเบญเบ \w เบเบทเบเปเบญเบปเบฒเบกเบฒเบเบฒเบเบเปเบญเบเบเบดเปเบเบเบฐเบเบธเบเบฑเบ.
เปเบเบดเปเบ perlocale เบชเปเบฒเบฅเบฑเบเบฅเบฒเบเบฅเบฐเบญเบฝเบ.
เบงเบดเบเบตเบเบฒเบ เบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเป I เบเบฒเบเปเบเปเบเบเบฑเบ a locale-smart เบชเบฐเบเบฑเบเบเบฒเบชเบฒ of "/[a-zA-Z]/"?
เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเป syntax เบเบฐเปเบเบเบเบปเบงเบญเบฑเบเบชเบญเบ POSIX "/[[:alpha:]]/" เบเบตเปเบเบฑเบเบเบถเบเปเบงเปเปเบ perlre.
เบเปเปเบงเปเบฒเปเบเบปเปเบฒเบเบฐเบขเบนเปเปเบเบเปเบญเบเบเบดเปเบเปเบ, เบเบปเบงเปเบฑเบเบชเบทเปเบกเปเบเบเบปเบงเปเบฑเบเบชเบทเปเบ \w
เปเบเบเบเปเปเบกเบตเบเบฒเบเบเบปเบงเปเบฅเบเปเบฅเบฐ underscore เปเบเป. เปเบเบเบฒเบเบฐเปเบเบฑเบ regex, เบกเบฑเบเบเปเบฒเบเบเบท "/[^\W\d_]/". เบเบญเบเบกเบฑเบ
เบเบฒเบเปเบชเบตเบก, เบเบตเปเบเปเปเปเบกเปเบเบเบปเบงเบญเบฑเบเบชเบญเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเบขเบนเปเปเบ \W เบเปเบญเบกเบเบฑเบเบเบปเบงเปเบฅเบเปเบฅเบฐ
เบเบตเบเบเปเบญเบ, เบซเบผเบท "/[\W\d_]/".
เบงเบดเบเบตเบเบฒเบ เบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเป I quote a เบเบปเบงเปเบ to เบเบฒเบเบเปเบฒเปเบเป in a regex?
Perl parser เบเบฐเบเบฐเบซเบเบฒเบเบเบฒเบเบญเปเบฒเบเบญเบตเบ $variable เปเบฅเบฐ @variable เปเบเบเบฒเบเบชเบฐเปเบเบเบญเบญเบเบเบปเบเบเบฐเบเบด
เปเบงเบฑเปเบเปเบชเบเปเบเปเบงเปเบฒเบเบปเบงเบเบฑเปเบเปเบกเปเบเปเบเบฑเบเบงเบปเบเบขเบทเบกเบเบฝเบง. เบเบทเบเปเปเบกเบนเบเบเบฒเบ, เปเบเบฑเปเบเบเบฝเบงเบเบฑเบ, เบเปเบฒเบเบเบงเบฒเบกเบทเบเบญเบ a
"s///" เบเบฒเบเบเบปเบเปเบเบเปเบกเปเบเบเบทเบงเปเบฒเปเบเบฑเบเบชเบฐเบเบฃเบดเบเบเบตเปเบญเปเบฒเบเบญเบตเบเบชเบญเบเปเบเบปเปเบฒ (เปเบเบดเปเบ perlop เบชเปเบฒเบฅเบฑเบเบฅเบฒเบเบฅเบฐเบญเบฝเบเปเบเบตเปเบกเปเบเบตเบก).
เบเบทเปเปเบงเปเบงเปเบฒเบเบปเบงเบฅเบฐเบเบญเบเบเบดเปเบชเบ regex เปเบเปเบเบฐเบเบทเบเบเบฐเบเบดเบเบฑเบเปเบงเบฑเปเบเปเบชเบเปเบเปเบงเปเบฒเบเปเบฒเบเปเบเปเบเปเบฒเบซเบเปเบฒ
เบเบฒเบเบเบปเบเปเบเบเบเปเบงเบ \Q. เบเบตเปเปเบกเปเบเบเบปเบงเบขเปเบฒเบ:
$string = "Placido P. Octopus";
$regex = "P.";
$string =~ s/$regex/Polyp/;
# $string เบเบฝเบงเบเบตเปเปเบกเปเบ "Polypacido P. Octopus"
เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒ "." เปเบกเปเบเบเบดเปเบชเบเปเบเบเบฒเบเบชเบฐเปเบเบเบญเบญเบเบเบปเบเบเบฐเบเบด, เปเบฅเบฐเบชเบฒเบกเบฒเบเบเบปเบเบเบฑเบเบเบปเบงเบญเบฑเบเบชเบญเบเบเบฝเบง, เปเบเป
regex "P." เบเบตเปเบเบตเปเปเบเปเบเบฑเบเบเบนเปเบเบฑเบ เปเบเบชเบฒเบเบเบปเปเบเบชเบฐเบเบฑเบ.
เปเบเบทเปเบญเบซเบฅเบปเบเบซเบเบตเบเบงเบฒเบกเบซเบกเบฒเบเบเบดเปเบชเบเบเบญเบ ".", เบเบงเบเปเบฎเบปเบฒเปเบเป "\Q":
$string = "Placido P. Octopus";
$regex = "P.";
$string =~ s/\Q$regex/Polyp/;
# $string เบเบฝเบงเบเบตเปเปเบกเปเบ "Placido Polyp Octopus"
เบเบฒเบเปเบเป "\Q" เปเบฎเบฑเบเปเบซเป <.> เปเบ regex เบเบทเบเบเบฐเบเบดเบเบฑเบเปเบเบฑเบเบฅเบฑเบเบชเบฐเบเบฐเบเบปเบเบเบฐเบเบด, เบเบฑเปเบเบเบฑเปเบ.
"เบ." เบเบปเบเบเบฑเบ "P" เบเบฒเบกเบเปเบงเบเบเบธเบ.
เปเบกเปเบโเบซเบเบฑเบ is "/o" เบเปเป เบชเปเบฒเบฅเบฑเบ?
(เบเบฐเบเบญเบเบชเปเบงเบเปเบเบ brian d foy)
เบเบปเบงเปเบฅเบทเบญเบ "/o" เบชเปเบฒเบฅเบฑเบเบเบฒเบเบชเบฐเปเบเบเบญเบญเบเบเบปเบเบเบฐเบเบด (เปเบญเบเบฐเบชเบฒเบเปเบ perlop เปเบฅเบฐ perlreref) เบเบญเบ Perl เบเบฑเบ
เบฅเบงเบเบฅเบงเบกเบเบฒเบเบชเบฐเปเบเบเบญเบญเบเบเบปเบเบเบฐเบเบดเบเบฝเบเปเบเปเบเบฑเปเบเบเบฝเบง. เบเบตเปเปเบกเปเบเปเบเบฑเบเบเบฐเปเบซเบเบเบเบฝเบเปเบเปเปเบเปเบงเบฅเบฒเบเบตเปเบฎเบนเบเปเบเบเบเบฐเบเบญเบเบกเบต a
เบเบปเบงเปเบ. Perls 5.6 เปเบฅเบฐเบเปเปเบกเบฒเบเบฑเบเบเบฒเบเบเบตเปเปเบเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเบเปเบฒเบฎเบนเบเปเบเบเบเปเปเบเปเบฝเบเปเบเบ.
เบเบฑเบเบเบฑเปเบเปเบเปเบเบปเบงเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเบฑเบเบเบนเป "m//", เบเบปเบงเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเบปเบเปเบเบ "s///", เปเบฅเบฐเบเบปเบเบเบฐเบเบด
expression quoting operator "qr//" เปเบกเปเบเปเบเบเบชเปเบฒเบ double-quotish, เบเปเบฒเบเบชเบฒเบกเบฒเบ interpolate
เบเบปเบงเปเบเปเบเบปเปเบฒเปเบเปเบเบฎเบนเบเปเบเบ. เปเบเบดเปเบเบเปเบฒเบเบญเบเบเบญเบ "เบเปเบญเบเบชเบฒเบกเบฒเบเบญเปเบฒเบเบญเบตเบเบเบปเบงเปเบเปเบเบทเปเบญเปเบเปเปเบ a
regex?" เบชเปเบฒเบฅเบฑเบเบฅเบฒเบเบฅเบฐเบญเบฝเบเปเบเบตเปเบกเปเบเบตเบก.
เบเบปเบงเบขเปเบฒเบเบเบตเปเปเบเปเปเบงเบฅเบฒเบเบฒเบเบชเบฐเปเบเบเบญเบญเบเบเบปเบเบเบฐเบเบดเบเบฒเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบฒเบเปเบเปเบเบฝเบเปเบฅเบฐเบเบดเบกเปเบชเบฑเปเบเบเบญเบ
เบเบฒเบโเบเปเบญเบโเบเปเปโเบกเบนเบโเบเบตเปโเบเบปเบโเบเบฑเบโเบกเบฑเบโ:
$pattern เบเบญเบเบเปเบญเบ = shift @ARGV;
เปเบเบเบฐเบเบฐเบเบตเป ( <> ) {
เบเบดเบกเบเปเบฒ m/$pattern/;
}
เปเบงเบตเบเบฑเบเบเบญเบ Perl เบเปเบญเบ 5.6 เบเบฐเบฅเบงเบเบฅเบงเบกเบเบฒเบเบชเบฐเปเบเบเบญเบญเบเบเบปเบเบเบฐเบเบดเบชเปเบฒเบฅเบฑเบเปเบเปเบฅเบฐ iteration,
เปเบเบดเบเปเบกเปเบเบงเปเบฒ $pattern เบเปเปเปเบเปเบเปเบฝเบเปเบเบ. "/o" เบเบฐเบเปเบญเบเบเบฑเบเบชเบดเปเบเบเบตเปเปเบเบเบเบญเบ Perl เปเบซเปเบฅเบงเบเบฅเบงเบก
เบฎเบนเบโเปเบเบโเบเบฒเบโเบเบฑเปเบโเบเปเบฒโเบญเบดเบโ, เบซเบผเบฑเบโเบเบฒเบโเบเบฑเปเบโเบเปเบฒโเปเบเปโเบเบทเบโเปเบซเบกเปโเบชเปเบฒโเบฅเบฑเบโเบเบฒเบโเบเปเปโเปเบโเบเบตเปโ:
$pattern เบเบญเบเบเปเบญเบ = shift @ARGV;
เปเบเบเบฐเบเบฐเบเบตเป ( <> ) {
เบเบดเบกเบเปเบฒ m/$pattern/o; # เบกเบตเบเบฐเปเบซเบเบเบชเบณเบฅเบฑเบ Perl < 5.6
}
เปเบเบฎเบธเปเบ 5.6 เปเบฅเบฐเบเปเปเบกเบฒ, Perl เบเบฐเบเปเปเบฅเบงเบเบฅเบงเบกเบเบฒเบเบชเบฐเปเบเบเบญเบญเบเบเบปเบเบเบฐเบเบดเบเปเบฒเบเบปเบงเปเบ
เบเปเปเปเบเปเบเปเบฝเบเปเบเบ, เบเบฑเปเบเบเบฑเปเบเบเปเบฒเบเบญเบฒเบเบเบฐเบเปเปเบเปเบญเบเบเบฒเบเบเบฒเบเปเบฅเบทเบญเบ "/o". เบกเบฑเบเบเปเปเปเบเบฑเบเบเบงเบ, เปเบเปเบกเบฑเบ
เบเปเปเปเบเปเบเปเบงเบเบเบทเบเบฑเบ. เบเปเบฒเบเปเบฒเบเบเปเบญเบเบเบฒเบเบชเบฐเบเบฑเบเปเบเปเบเบญเบ Perl เปเบเบทเปเบญเบฅเบงเบเบฅเบงเบกเบเบฒเบเบชเบฐเปเบเบเบญเบญเบเบเบปเบเบเบฐเบเบด
เบเบฝเบเปเบเปเบเบฑเปเบเบเบฝเบงเปเบเบดเบเปเบกเปเบเบงเปเบฒเบเบฒเบเบเปเบฝเบเปเบเบเบเบปเบงเปเบ (เบเบฑเปเบเบเบฑเปเบ, เบเบฝเบเปเบเปเปเบเปเบกเบนเบเบเปเบฒเปเบเบทเปเบญเบเบเบปเปเบเบเบญเบเบกเบฑเบ), เบเปเบฒเบเบเบฑเบ
เบเปเบญเบเบเบฒเบ "/o".
เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเบดเปเบเปเบเบทเปเบญเบเบเบฑเบเบเบฒเบเบชเบฐเปเบเบเบญเบญเบเบเบปเบเบเบฐเบเบดเบเบญเบ Perl เบขเบนเปเบเปเบญเบเปเบฎเบฑเบเบงเบฝเบเปเบเบทเปเบญเบเบงเบเบชเบญเบเบเบปเบงเปเบญเบเบงเปเบฒ Perl เปเบกเปเบเบเป
recompiling เบเบฒเบเบชเบฐเปเบเบเบญเบญเบเบเบปเบเบเบฐเบเบด. The "use re 'debug'" pragma (เบกเบฒเบเปเบญเบกเบเบฑเบ Perl 5.005 เปเบฅเบฐ
เบเปเปเบกเบฒ) เบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบฅเบฒเบเบฅเบฐเบญเบฝเบ. เบเปเบงเบ Perls เบเปเบญเบ 5.6, เบเปเบฒเบเบเบงเบเปเบซเบฑเบ "re" เบฅเบฒเบเบเบฒเบเบงเปเบฒเบกเบฑเบ
เบฅเบงเบเบฅเบงเบกเบเบฒเบเบชเบฐเปเบเบเบญเบญเบเบเบปเบเบเบฐเบเบดเปเบเปเบเปเบฅเบฐ iteration. เบเปเบงเบ Perl 5.6 เบซเบผเบทเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบเปเบฒเบเบเบงเบ
เบเบฝเบเปเบเปเปเบเบดเปเบ "re" เบฅเบฒเบเบเบฒเบเบงเปเบฒเบชเปเบฒเบฅเบฑเบเบเบฒเบ iteration เบเปเบฒเบญเบดเบ.
เปเบเป re 'debug';
$regex เบเบญเบเบเปเบญเบ = 'Perl';
foreach ( qw(Perl Java Ruby Python) ) {
เบเบดเบก STDERR "-" x 73, "\n";
เบเบดเบก STDERR "เบเบณเบฅเบฑเบเบเบฐเบเบฒเบเบฒเบก $_...\n";
เบเบดเบก STDERR "\t$_ เปเบกเปเบเบเบต!\n" เบเปเบฒ m/$regex/;
}
เบงเบดเบเบตเบเบฒเบ do I เบเบฒเบเบเปเบฒเปเบเป a เบเบปเบเบเบฐเบเบด เบเบฒเบเบชเบฐเปเบเบเบญเบญเบ to เบญเบญเบ เปเบเบ C เบเปเบฒโเปเบซเบฑเบ เบเบฒเบ a เปเบเปเบก?
เปเบโเบเบฐโเบเบฐโเบเบตเปโเบเบตเปโเบเบปเบงโเบเบดเบโเปเบฅเปเบงโเบชเบฒโเบกเบฒเบโเปเบฎเบฑเบโเปเบเป, เบกเบฑเบโเปเบเบฑเบโเบซเบผเบฒเบโเบเบฒเบโเบโเปโเบงเบฒโเบเบตเปโเบเปเบฒเบโเบเบดเบ. เบเบปเบงเบขเปเบฒเบ, เบเบตเป
เปเบถเปเบ เปเบชเบฑเปเบ
perl -0777 -pe 's{/\*.*?\*/}{}gs' foo.c
เบเบฐเปเบฎเบฑเบเบงเบฝเบเบขเบนเปเปเบเบซเบผเบฒเบเปเบเปเบเปเปเปเบกเปเบเบเบธเบเบเปเบฅเบฐเบเบต. เปเบเบปเปเบฒเปเบซเบฑเบ, เบกเบฑเบเบเปเบฒเบเปเบเบตเบเปเบเปเบเปเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฐเปเบเบ
เปเบเบเบเบฒเบ C, เปเบเบเบชเบฐเปเบเบฒเบฐ, เบเบนเปเบเบตเปเบกเบตเบชเบดเปเบเบเบตเปเปเบเบดเปเบเบเบทเบงเปเบฒเปเบเบฑเบเบเปเบฒเบเบดเบเบเปเบฒเปเบซเบฑเบเปเบเบชเบฒเบเบเบตเปเบญเปเบฒเบเบญเบตเบ. เบชเปเบฒเบฅเบฑเบ
เบงเปเบฒ, เบเปเบฒเบเบเปเบญเบเบเบฒเบเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเปเบเบฑเปเบเบเบตเป, เบชเปเบฒเบเปเบเบ Jeffrey Friedl เปเบฅเบฐเบเปเปเบกเบฒเบเบฑเบเปเบเปเปเบเบ Fred
Curtis
$/ = undef;
$_ = <> ;
s#/\*[^*]*\*+([^/*][^*]*\*+)*/|("(\\.|[^"\\])*"|'( \\.|[^'\\])*'|.[^/"'\\]*)#เบเปเบฒเบเบปเบ $2 ? $2: "" #gse;
เบเบดเบก;
เบเบตเป, เปเบเปเบเบญเบ, เบญเบฒเบเบเบฐเบเบทเบเบเบฝเบเบขเปเบฒเบเบเบทเบเบเปเบญเบเบเบฑเบเบเบปเบงเปเบเปเปเบ "/x", เปเบเบตเปเบกเบเปเบญเบเบซเบงเปเบฒเบ
เปเบฅเบฐเบเปเบฒเปเบซเบฑเบ. เปเบเบเบตเปเบเบตเปเบกเบฑเบเปเบเปเบเบทเบเบเบฐเบซเบเบฒเบ, เบกเบฒเบฅเบฐเบเบฒเบเบเบญเบ Fred Curtis.
s{
/\* ## เปเบฅเบตเปเบกเบเบปเปเบเบเบญเบ /* ... */ เบเปเบฒเปเบซเบฑเบ
[^*]*\*+ ## เบเปเปเปเบกเปเบ* เบเบฒเบกเบเปเบงเบ 1 เบซเบผเบทเบซเบผเบฒเบเบเบงเปเบฒ *'s
(
[^/*][^*]*\*+
)* ## 0-or-more เบชเบดเปเบเบเบตเปเบเปเปเปเบฅเบตเปเบกเบเบปเปเบเบเปเบงเบ /
## เปเบเปเบฅเบปเบเบเปเบฒเบเบเปเบงเบ '*'
/ ## เบชเบดเปเบเบชเบธเบ /* ... */ comment
| ## เบซเบผเบทเบชเบดเปเบเบเปเบฒเบเปเบเบตเปเบเปเปเปเบกเปเบเบเปเบฒเปเบซเบฑเบ:
(
" ## เปเบฅเบตเปเบกเบเบปเปเบเบเบญเบ " ... " string
(
\\. ## เปเบต char
| ## เบซเบผเบท
[^"\\] ## เบเปเป "\
)*
" ## เบชเบดเปเบเบชเบธเบเบเบญเบ " ... " string
| ## เบซเบผเบท
' ## เปเบฅเบตเปเบกเบเบปเปเบเบเบญเบ ' ... ' string
(
\\. ## เปเบต char
| ## เบซเบผเบท
[^'\\] ## เบเปเปเปเบกเปเบ '\
)*
' ## เบชเบดเปเบเบชเบธเบเบเบญเบ ' ... ' string
| ## เบซเบผเบท
. ## เบญเบฑเบเปเบเบญเบฑเบเปเบถเปเบ char
[^/"'\\]* ## เบเบปเบงเบญเบฑเบเบเบฐเบฅเบฐเบเบตเปเบเปเปเปเบฅเบตเปเบกเบเบณเปเบซเบฑเบ, เบชเบฐเบเบฃเบดเบ เบซเบผเบท เปเบต
)
}{เบเบณเบเบปเบ $2 ? $2 : ""}gxse;
เบเบฒเบโเบเบฑเบโเปเบเปโเปเบฅเบฑเบโเบเปเบญเบโเบเบฑเบโเปเบญเบปเบฒโเบเปเบฒโเบเบดเบโเปเบซเบฑเบ C ++โ, เบญเบฒเบโเบเบฐโเบเบฐโเบซเบเบฒเบโเบซเบผเบฒเบโเปเบเบงโเปเบเบโเบเบฒเบโเบเปเบฒโเปเบเป a
เบฅเบฑเบเบชเบฐเบเบฐเบเปเปเปเบเบทเปเบญเบ:
s#/\*[^*]*\*+([^/*][^*]*\*+)*/|//([^\\]|[^\n][\n]? )*?\n|("(\\.|[^"\\])*"|'(\\.|[^'\\])*'|.[^/"'\\]*) #เบเบณเบเบปเบ $3 ? $3: "" #gse;
เบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเป I เบเบฒเบเบเปเบฒเปเบเป Perl เบเบปเบเบเบฐเบเบด expressions to เบเบฒเบเปเบเปเบเบเบฑเบ เบชเบปเบกเบเบธเบ เบเปเปโเบเบงเบฒเบก?
(เบเบฐเบเบญเบเบชเปเบงเบเปเบเบ brian d foy)
เบเบงเบฒเบกเบเบฐเบเบฒเบเบฒเบกเบเปเบฒเบญเบดเบเบเบญเบเบเปเบฒเบเบญเบฒเบเบเบฐเปเบเบฑเบเบเปเปเบเบงเบฒเบก::เปเบกเบเบนเบเบเบตเปเบชเบปเบกเบเบธเบ, เปเบเบดเปเบเบขเบนเปเปเบเบกเบฒเบเบเบฐเบเบฒเบ Perl
เบซเปเบญเบเบชเบฐเบซเบกเบธเบเบเบฑเบเบเบฑเปเบเปเบเป Perl 5.8. เบกเบฑเบเบกเบตเบซเบเปเบฒเบเบตเปเบซเบฅเบฒเบเบซเบฅเบฒเบเปเบเบทเปเบญเบเบฑเบเบเบฒเบเบเบฑเบเบเปเปเบเบงเบฒเบกเบเบตเปเบซเบเบธเปเบเบเบฒเบ. เปเบเป
Regexp::เปเบกเบเบนเบเบเบปเปเบงเปเบเบชเบฒเบกเบฒเบเบเปเบงเบเปเบเปเปเบเบเบเบฒเบเบชเบฐเบซเบเบญเบเบฎเบนเบเปเบเบเบเบฐเบเปเบญเบเบเบตเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเป.
เปเบเบเบฒเบเบฐเปเบเบฑเบ Perl 5.10, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฑเบเบเบนเปเบเปเปเบเบงเบฒเบกเบเบตเปเบชเบปเบกเบเบนเบเบเบฑเบเบเบฒเบเบชเบฐเปเบเบเบญเบญเบเบเบปเบเบเบฐเบเบดเปเบเบเปเบเป recursive
เบฎเบนเบเปเบเบ. เบเปเบญเบเบเบตเปเบเบฐ Perl 5.10, เบเปเบฒเบเบเปเบญเบเปเบเป resort เบเบฑเบ tricks เบเปเบฒเบเปเปเบเบฑเปเบ: เบเบฒเบเบเปเบฒเปเบเปเบฅเบฐเบซเบฑเบ Perl เปเบ
"(??{})" เบฅเบณเบเบฑเบ.
เบเบตเปเปเบกเปเบเบเบปเบงเบขเปเบฒเบเบเบตเปเปเบเปเบเบฒเบเบชเบฐเปเบเบเบญเบญเบเบเบปเบเบเบฐเบเบด recursive. เปเบเบปเปเบฒเบซเบกเบฒเบเปเบกเปเบเปเบเบทเปเบญเปเบเบฑเบเบเปเบฒเบเบฑเบเบซเบกเบปเบเบเบญเบ
เบเปเปเบเบงเบฒเบกเบเบฒเบเปเบเบงเบปเบเปเบฅเบฑเบเบกเบธเบก, เบฅเบงเบกเบเบฑเบเบเปเปเบเบงเบฒเบกเปเบเบงเบปเบเปเบฅเบฑเบเบกเบธเบกเบเบตเปเบเปเบญเบเบเบฑเบ. เบเปเปเบเบงเบฒเบกเบเบปเบงเบขเปเบฒเบเบเบตเป
เบกเบตเบชเบญเบเบเบธเปเบก "เบเบตเปเบชเปเบฒเบเบฑเบ": เบเบธเปเบกเบเบตเปเบกเบตเบฅเบฐเบเบฑเบเบซเบเบถเปเบเบเบญเบเบฎเบฑเบเปเบฅเบฐเบเบธเปเบกเบเบตเปเบกเบตเบชเบญเบเบฅเบฐเบเบฑเบเบเบญเบ
เบฎเบฑเบ. เบกเบตเบซเปเบฒเบเบธเปเบกเบเบฑเบเปเบปเบเปเบเบงเบปเบเปเบฅเบฑเบเบกเบธเบก:
เบเปเบญเบเบกเบตเบเบฒเบ > เปเบฅเบฐ
> >
เปเบฅเบฐเบเบฑเปเบเปเบกเปเบเบกเบฑเบ.
เบเบฒเบเบชเบฐเปเบเบเบญเบญเบเบเบปเบเบเบฐเบเบดเปเบเบทเปเบญเปเบซเปเบเบปเบเบเบฑเบเบเปเปเบเบงเบฒเบกเบเบตเปเบชเบปเบกเบเบนเบเปเบเปเบชเบญเบเปเบซเบกเป (เปเบเบดเบ Perl 5.10) เบเบปเบเบเบฐเบเบด
เบฅเบฑเบเบชเบฐเบเบฐเบเบฒเบเบชเบฐเปเบเบเบญเบญเบ. เปเบซเบผเบปเปเบฒเบเบตเปเปเบกเปเบเปเบเปเบเบงเบกเปเบญเบปเบฒเปเบ perlre เปเบฅเบฐเบเบปเบงเบขเปเบฒเบเบเบตเปเปเบกเปเบเบชเบฐเบเบฑเบเบเบฑเบเปเบเปเบเบญเบ
เบซเบเบถเปเบเปเบเปเบญเบเบฐเบชเบฒเบเบเบฑเปเบ.
เบเปเบฒเบญเบดเบ, เบเบฒเบเปเบเบตเปเบก "+" เบเบตเปเบเบญเบเบเบญเบเปเบซเบกเปเปเบชเปเบเบฑเบเบเบปเบงเบเปเบฒเบเบปเบเบเบฐเบฅเบดเบกเบฒเบเปเบเปเบเบตเปเบเบญเบเบซเบฒเบเปเบฒเบเบตเปเบเบฒเบงเบเบตเปเบชเบธเบเปเบฅเบฐเปเบฎเบฑเบเปเบเป
เบเปเป backtrack. เบเบตเปเบชเปเบฒเบเบฑเบเบเบฑเบเบเบฑเปเบเปเบเปเบเปเบฒเบเบเปเบญเบเบเบฒเบเบเบตเปเบเบฐเบเบฑเบเบเบฒเบเบงเบปเบเปเบฅเบฑเบเบกเบธเบกเปเบเปเบเบเบเปเบฒเบเบเบฒเบ
recursion, เบเปเป backtracking. เบเบธเปเบก "[^<>]++" เบเบญเบเบซเบฒเปเบถเปเบ เบซเบผเบท เบซเบผเบฒเบเบงเบปเบเปเบฅเบฑเบเบเบตเปเบเปเปเปเบกเปเบเบกเบธเบก
เปเบเบเบเปเปเบกเบตเบเบฒเบ backtracking.
เบญเบฑเบเบเบตเบชเบญเบ, "(?PARNO)" เปเปเปเบซเบกเบฒเบเปเบเบดเบเบฎเบนเบเปเบเบเบเปเบญเบเปเบเบเบธเปเบกเบเบฒเบเบเบฑเบเบเบฒเบเบชเบฐเปเบเบฒเบฐเบเบตเปเบกเบญเบเปเบซเป
เปเบเบ "PARNO". เปเบ regex เบเปเปเปเบเบเบตเป, เบเบธเปเบก capture เบเปเบฒเบญเบดเบเบเบญเบเบซเบฒ (เปเบฅเบฐเบเบทเป) เปเบเป
เบเปเปเบเบงเบฒเบกเบเบตเปเบชเบปเบกเบเบนเบ, เปเบฅเบฐเบเปเบฒเบเบเปเบญเบเบเบฒเบเบฎเบนเบเปเบเบเบเบฝเบงเบเบฑเบเบเบฑเปเบเบเบฒเบเปเบ buffer เบเปเบฒเบญเบดเบเปเบเบทเปเบญเบเปเบฒเบ
เบเปเปเบเบงเบฒเบกเบเบตเปเบเปเบญเบเบเบฑเบ. เบเบฑเปเบเปเบกเปเบเบเบฒเบเบชเปเบงเบ recursive. "(?1)" เปเบเปเบฎเบนเบเปเบเบเปเบเบเบฒเบเบเบฑเบเบเบฒเบเบเบฒเบเบเบญเบ
เบเบธเปเบกเปเบเบฑเบเบเบฒเบเบชเปเบงเบเปเบญเบเบฐเบฅเบฒเบเบเบญเบ regex.
เปเบญเบปเบฒเบกเบฑเบเบเบฑเบเบซเบกเบปเบเบฎเปเบงเบกเบเบฑเบ, เบเปเบฒเบเบกเบต:
#!/usr/local/bin/perl5.10.0
$string เบเบญเบเบเปเบญเบ =<<"เบเบตเปเบเบตเป";
เบเปเบญเบเบกเบตเบเบฒเบ > เปเบฅเบฐ
> >
เปเบฅเบฐเบเบฑเปเบเปเบกเปเบเบกเบฑเบ.
เบเบตเปเบเบตเป
@groups เบเบญเบเบเปเบญเบ = $string =~ m/
(#เปเบฅเบตเปเบกเบเบฑเบเบเบธเปเบก 1
< # เบเบปเบเบเบฑเบเบงเบปเบเปเบฅเบฑเบเบกเบธเบกเปเบเบตเบ
(?:
[^<>]++ # เบงเบปเบเปเบฅเบฑเบเบเบตเปเบเปเปเปเบกเปเบเบกเบธเบกเปเบถเปเบ เบซเบผเบทเบซเบผเบฒเบเบญเบฑเบ, เบเปเปเปเบกเปเบเบเบฒเบเบเบดเบเบเบฒเบกเบซเบผเบฑเบ
|
(?1) # เบเบปเบ < เบซเบผเบท >, เบชเบฐเบเบฑเปเบ recurse เปเบเบทเปเบญเบเบฑเบเบเบธเปเบก 1
)*
> # เบเบฑเบเบเบนเปเบงเบปเบเปเบฅเบฑเบเบกเบธเบกเบเบดเบ
) # เบชเบดเปเบเบชเบธเบเบเบฒเบเบเบฑเบเบเบธเปเบก 1
/xg;
$" = "\n\t";
เบเบดเบก "เบเบปเบ:\n\t@groups\n";
เบเบปเบเปเบเปเบฎเบฑเบเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบงเปเบฒ Perl เบเบปเบเปเบซเบฑเบเบชเบญเบเบเบธเปเบกเปเบซเบเป:
เบเบปเบ:
>
> >
เบเปเบงเบเบงเบฝเบเบเบดเปเบชเบเปเบฅเบฑเบเบเปเบญเบ, เปเบเบปเปเบฒเบชเบฒเบกเบฒเบเปเบญเบปเบฒเบเบธเปเบกเบเบฑเบเปเบปเบเปเบเบงเบปเบเปเบฅเบฑเบเบกเบธเบกเปเบเปเปเบเบดเบเปเบกเปเบเบงเปเบฒเปเบเบปเบฒเปเบเบปเปเบฒเบขเบนเปเบเปเบเบฒเบก
เปเบเบงเบปเบเปเบฅเบฑเบเบกเบธเบกเบญเบทเปเบเปเปเบเบฑเปเบเบเบฑเบ. เปเบเปเบฅเบฐเบเบฑเปเบเบเบตเปเบเปเบฒเบเปเบเปเบฎเบฑเบเบเบฒเบเปเบเปเบเบเบฑเบเบเบตเปเบชเบปเบกเบเบนเบ, เปเบญเบปเบฒเบเปเบฒเบเบเบญเบเบเบญเบเบกเบฑเบเบญเบญเบ
เบเบปเบงเบเบฑเปเบ (เบเบฑเปเบเปเบกเปเบเบญเบฑเบเบเบตเปเปเบเบปเปเบฒเบซเบฒเบเปเบเบฑเบเบเบนเปเบเบฑเบเปเบฅเปเบง เบขเปเบฒเบเบฑเบเบเบนเปเบกเบฑเบเบญเบตเบ) เปเบฅเบฐเปเบเบตเปเบกเปเบชเปเบเบดเบง.
เบเบญเบเบชเบฒเบเบเบตเปเบเบฐเบเบฐเบกเบงเบเบเบปเบ. เบชเบทเบเบเปเปเปเบฎเบฑเบเบกเบฑเบเบเบปเบเบเบงเปเบฒเปเบเบปเปเบฒเบเบฐเบเปเปเบกเบตเบเบฒเบเปเบเปเบเบเบฑเบ:
#!/usr/local/bin/perl5.10.0
@queue เบเบญเบเบเปเบญเบ =<< "เบเบตเปเบเบตเป";
เบเปเบญเบเบกเบตเบเบฒเบ > เปเบฅเบฐ
> >
เปเบฅเบฐเบเบฑเปเบเปเบกเปเบเบกเบฑเบ.
เบเบตเปเบเบตเป
$regex เบเบญเบเบเปเบญเบ = qr/
(# เบเบธเบเปเบฅเบตเปเบกเบเบปเปเบเบเบญเบเบงเบปเบเปเบฅเบฑเบ 1
< # เบเบปเบเบเบฑเบเบงเบปเบเปเบฅเบฑเบเบกเบธเบกเปเบเบตเบ
(?:
[^<>]++ # เบงเบปเบเปเบฅเบฑเบเบเบตเปเบเปเปเปเบกเปเบเบกเบธเบกเปเบถเปเบ เบซเบผเบทเบซเบผเบฒเบเบญเบฑเบ, เบเปเปเปเบกเปเบเบเบฒเบเบเบดเบเบเบฒเบกเบซเบผเบฑเบ
|
(?1) # recurse เบเบฑเบเบงเบปเบเปเบฅเบฑเบ 1
)*
> # เบเบฑเบเบเบนเปเบงเบปเบเปเบฅเบฑเบเบกเบธเบกเบเบดเบ
) # เบเปเบฒเบเบเบญเบเบงเบปเบเปเบฅเบฑเบ 1
/x;
$" = "\n\t";
เปเบเบเบฐเบเบฐเบเบตเป ( @queue ) {
$string เบเบญเบเบเปเบญเบ = shift @queue;
@groups เบเบญเบเบเปเบญเบ = $string =~ m/$regex/g;
เบเบดเบก "เบเบปเบ:\n\t@groups\n\n" เบเปเบฒ @groups;
unshift @queue, เปเบเบเบเบตเป { s/^ $//; $_ } @groups;
}
เบเบปเบเปเบเปเบฎเบฑเบเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบเบฑเบเบซเบกเบปเบเบเบญเบเบเบธเปเบก. เบเบฒเบโเปเบเปเบโเบเบฑเบโเบเบฒเบโเบเบญเบโเบชเบธเบโเบชเบฐโเปเบเบโเปเบซเปโเปเบซเบฑเบโเปเบเบดเบโเบเปเบฒโเบญเบดเบโเปเบฅเบฐโเบฎเบฑเบโ
เบเบฒเบเปเบเปเบเบเบฑเบเบเบฐเบเบปเบเบเบถเปเบเบเบฒเบเบซเบผเบฑเบ:
เบเบปเบ:
>
> >
เบเบปเบ:
เบเบปเบ:
>
เบเบปเบ:
เปเบกเปเบโเบซเบเบฑเบ เบเปเป it เบซเบกเบฒเบเบเบงเบฒเบกเบงเปเบฒ เบเบตเป regexes เบกเบต เปเบฅเบ? เบงเบดเบเบตเบเบฒเบ เบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเป I เปเบเปเบฎเบฑเบ เบเบฐเบกเบฒเบ เบกเบฑเบเบเปเป?
เบเบปเบเบชเปเบงเบเปเบซเบเปเบซเบกเบฒเบเบเบงเบฒเบกเบงเปเบฒ regexes greedy เบเบปเบเบเบฑเบเบซเบผเบฒเบเปเบเบปเปเบฒเบเบตเปเปเบเบปเบฒเปเบเบปเปเบฒเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเป. เปเบงเบปเปเบฒเบเบฒเบเบงเบดเบเบฒเบเบฒเบ,
เบเบปเบงเบเบดเบเปเบฅเปเบงเบกเบฑเบเปเบกเปเบเบเบปเบงเบเปเบฒเบเบปเบเบเบฐเบฅเบดเบกเบฒเบ ("?", "*", "+", "{}") เบเบตเปเบกเบตเบเบงเบฒเบกเปเบฅเบเบกเบฒเบเบเบงเปเบฒเบเบฑเบเปเบปเบ.
เบฎเบนเบเปเบเบ; Perl เบกเบฑเบเบเบงเบฒเบกเปเบฅเบเปเบเบเปเบญเบเบเบดเปเบเปเบฅเบฐเบเบงเบฒเบกเบเปเปเบเปเบเบเบฑเบเบเบตเบเปเปเบเบฑเบเบเบงเบฒเบกเปเบฅเบเปเบเบเบฅเบงเบก. เปเบเปโเบฎเบฑเบ
เบชเบฐเบเบฑเบเบเบตเปเบเปเปเปเบกเปเบ greedy เบเบญเบเบเบฐเบฅเบดเบกเบฒเบเบเบฝเบงเบเบฑเบ, เปเบเป ("??", "*?", "+?", "{}?").
เบเบปเบงเบขเปเบฒเบ:
my $s1 = my $s2 = "เบเปเบญเบเปเบฒเบงเบซเบผเบฒเบ";
$s1 =~ s/ve.*y //; #เบเปเบญเบเปเบฒเบง
$s2 =~ s/ve.*?y //; #เบเปเบญเบเปเบฒเบงเบซเบผเบฒเบ
เบชเบฑเบเปเบเบเปเบซเบฑเบเบงเบดเบเบตเบเบฒเบเบเปเบฝเบเปเบเบเบเบตเบชเบญเบเบขเบธเบเบเบฒเบเบเบฑเบเบเบนเปเบเบฑเบเบเบตเบเบตเปเบกเบฑเบเบเบปเบเบเบฑเบ "y". เปเบเป
"*?" quantifier เบเบฐเบชเบดเบเบเบดเบเบปเบเบเบญเบเปเบเบทเปเบญเบเบเบฑเบเบเบฒเบเบชเบฐเปเบเบเบญเบญเบเบเบปเบเบเบฐเบเบดเปเบเบทเปเบญเบเบญเบเบซเบฒเบเบฒเบเบเบฑเบเบเบนเปเปเบเปเปเบง
เปเบเบฑเบโเปเบโเปเบเปโเปเบฅเบฐโเบเปเบฒเบโเบเบฒเบโเบเบงเบโเบเบธเบกโเปเบโเบญเบฑเบโเปเบโเบเปโเบเบฒเบกโเบเปเปโเปเบโเปเบโเปเบชเบฑเปเบโ, เบเบฑเปเบโเบเบตเปโเบเปเบฒเบโเบเบฐโเบเปเบฒโเบซเบฒเบโเบงเปเบฒโเบเปเบฒเบโเปเบเบฑเบโ
เบกเบฑเบเบซเบผเบตเปเบเบกเบฑเบเบเบปเปเบ.
เบงเบดเบเบตเบเบฒเบ do I เบเบฐเบเบงเบเบเบฒเบ เปเบเปเบฅเบฐเบเบปเบ เบเปเบฒ on เปเบเปเบฅเบฐเบเบปเบ เบชเบฒเบ?
เปเบเปเบเบฑเบเบเบฑเบเบเบฒเบเปเบเปเบเบเบฑเบ:
เปเบเบเบฐเบเบฐเบเบตเป (<>) {
foreach my $word (เปเบเบ) {
# เปเบฎเบฑเบเบเบฒเบเบขเปเบฒเบเบเปเบงเบ $word เบเบตเปเบเบตเป
}
}
เปเบซเปเบชเบฑเบเปเบเบเบงเปเบฒเบเบตเปเบเปเปเปเบกเปเบเบเปเบฒเบชเบฑเบเปเบเบเบงเบฒเบกเบซเบกเบฒเบเบเบฒเบชเบฒเบญเบฑเบเบเบดเบเปเบเปเป; เบกเบฑเบเปเบเบฑเบเบเบฝเบเปเบเป chunks เบเบญเบเบเบดเบเบเปเปเบเบฑเบ
เบเบปเบงเบญเบฑเบเบชเบญเบเบเบตเปเบเปเปเปเบกเปเบเบเบฐเบซเบงเปเบฒเบ.
เปเบเบทเปเบญเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเบฅเปเบฒเบเบฑเบเบเบปเบงเปเบฅเบเปเบฅเบฐเบเบปเบงเปเบฅเบเปเบเบปเปเบฒเบเบฑเปเบ (เบฅเบงเบกเบเบฑเบเปเบเบทเปเบญเบเบเบฝเบ), เบเปเบฒเบเบญเบฒเบเบเบฐเบเบดเบเบฒเบฅเบฐเบเบฒ
เปเบเบเบฐเบเบฐเบเบตเป (<>) {
foreach $word (m/(\w+)/g) {
# เปเบฎเบฑเบเบเบฒเบเบขเปเบฒเบเบเปเบงเบ $word เบเบตเปเบเบตเป
}
}
เบงเบดเบเบตเบเบฒเบ เบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเป I เบเบดเบก เบญเบญเบ a เบเบงเบฒเบกเบเบตเปเบเบญเบเบเปเบฒ or เบเบงเบฒเบกเบเบตเปเปเบชเบฑเปเบ เบชเบฐเบซเบผเบธเบ?
เปเบเบทเปเบญเปเบฎเบฑเบเบชเบดเปเบเบเบตเป, เบเปเบฒเบเบเปเบญเบเปเบเบเบญเบญเบเปเบเปเบฅเบฐเบเปเบฒเปเบเบเบฐเปเบชเบเบฒเบเบเปเบญเบเบเปเปเบกเบนเบ. เบเบงเบเปเบฎเบปเบฒเบเบฐเบเปเบฒเบเปเบฒเบงเปเบฒเปเบเบ
เบเปเบฒเบเบตเปเบเปเบฒเบเบซเบกเบฒเบเปเบเบดเบ chunk เบเบญเบเบเบปเบงเบญเบฑเบเบชเบญเบ, hyphens, เบซเบผเบท apostrophes, เปเบเบเบเบตเปเบเบฐเบเปเบงเบฒเบเบตเปเบเปเปเปเบกเปเบ.
whitespace chunk เปเบเบงโเบเบงเบฒเบกโเบเบดเบโเบเบญเบโเบเปเบฒโเบเบตเปโเปเบเปโเบฎเบฑเบโเปเบโเบเปเบฒโเบเบฒเบกโเบเบตเปโเบเปเบฒเบโเบกเบฒโ:
เบเบญเบเบเปเบญเบ (% เปเบซเบฑเบ);
เปเบเบเบฐเบเบฐเบเบตเป (<>) {
เปเบเบเบฐเบเบฐเบเบตเป (/(\b[^\W_\d][\w'-]+\b)/g ) { # เบเบดเบเบฎเบญเบ "`เปเบเบฐ"
$seen{$1}++;
}
}
เปเบเบเบฐเบเบฐเบเบตเป ($word, $count) เบเบญเบเบเปเบญเบ = เปเบเปเบฅเบฐ % เปเบซเบฑเบ ) {
เบเบดเบก "$count $word\n";
}
เบเปเบฒเบเปเบฒเบเบเปเบญเบเบเบฒเบเปเบฎเบฑเบเบชเบดเปเบเบเบฝเบงเบเบฑเบเบชเปเบฒเบฅเบฑเบเปเบชเบฑเปเบ, เบเปเบฒเบเบเปเปเบเปเบญเบเบเบฒเบเบเบฒเบเบชเบฐเปเบเบเบญเบญเบเบเบปเบเบเบฐเบเบด:
เบเบญเบเบเปเบญเบ (% เปเบซเบฑเบ);
เปเบเบเบฐเบเบฐเบเบตเป (<>) {
$seen{$_}++;
}
เปเบเบเบฐเบเบฐเบเบตเป (เบเบญเบเบเปเบญเบ ($line, $count) = เปเบเปเบฅเบฐ % เปเบซเบฑเบ ) {
เบเบดเบก "$count $line";
}
เบเปเบฒเบเปเบฒเบเบเปเบญเบเบเบฒเบเปเบซเปเบเบปเบเบเบฐเบฅเบดเบเปเบซเบผเบปเปเบฒเบเบตเปเบขเบนเปเปเบเบฅเปเบฒเบเบฑเบ, เปเบเบดเปเบ perlfaq4: "เบเปเบญเบเบเบฐเบเบฑเบเบฅเบฝเบ hash เปเบเบงเปเบ.
(เบเบฒเบเปเบฅเบทเบญเบเปเบเบเบกเบนเบเบเปเบฒเปเบเบเบเบตเปเบเบฐเปเบเบฑเบเบฅเบฐเบซเบฑเบ)?".
เบงเบดเบเบตเบเบฒเบ เบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเป I do เบเบฐเบกเบฒเบ เบเบปเบเบเบฑเบ?
เปเบเบดเปเบเปเบกเบเบนเบ String:: เบเบฐเบกเบฒเบเบชเบฒเบกเบฒเบเปเบเปเปเบเปเบเบฒเบ CPAN.
เบงเบดเบเบตเบเบฒเบ do I เบเบฐเบชเบดเบเบเบดเบเบปเบ เบเบฒเบเปเบเปเบเบเบฑเบ เบเปเบฒเบเบงเบเบซเบผเบฒเบ เบเบปเบเบเบฐเบเบด expressions at เบเบฑเปเบเบเบฝเบง?
(เบเบฐเบเบญเบเบชเปเบงเบเปเบเบ brian d foy)
เบเปเบฒเบเปเบฒเบเบกเบต Perl 5.10 เบซเบผเบทเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบเบตเปเปเบกเปเบเปเบเบทเบญเบเบเปเปเบชเปเบฒเบเบฑเบ. เบเปเบฒเบเบเบฝเบเปเบเป smart match เบเบฑเบ
array เบเบญเบ object expression เบเบปเบเบเบฐเบเบด:
my @patterns = ( qr/Fr.d/, qr/B.rn.y/, qr/W.lm./ );
เบเปเบฒ ( $string ~~ @patterns ) {
...
};
เบเบฒเบเบเบฑเบเบเบนเปเบเบตเปเบชเบฐเบซเบผเบฒเบเบเบฐเบขเบธเบเปเบกเบทเปเบญเบกเบฑเบเบเบปเบเบเบฒเบเบเบฑเบเบเบนเป, เบชเบฐเบเบฑเปเบเบกเบฑเบเบเปเปเบเปเบฒเปเบเบฑเบเบเปเบญเบเบเบฐเบเบฒเบเบฒเบกเบเบธเบเบเบฒเบเบชเบฐเปเบเบ.
เบเปเบญเบเปเปเบฒเบเบตเปเบเบงเปเบฒ Perl 5.10, เบเปเบฒเบเบกเบตเบงเบฝเบเปเบฎเบฑเบเปเปเบญเบเปเบถเปเบ. เบเปเบฒเบเบเปเบญเบเบเบฒเบเบเบตเปเบเบฐเบซเบผเบตเบเปเบงเบฑเปเบเบเบฒเบเบฅเบงเบเบฅเบงเบก a
เบเบฒเบเบชเบฐเปเบเบเบญเบญเบเปเบเบฑเบเบเบปเบเบเบฐเบเบดเบเบธเบเบเบฑเปเบเบเบตเปเบเปเบฒเบเบเปเบญเบเบเบฒเบเบเบตเปเบเบฐเบเบฑเบเบเบนเปเบกเบฑเบ. เปเบเบเบปเบงเบขเปเบฒเบเบเบตเป, perl เบเปเบญเบ recompile
เบเบฒเบเบชเบฐเปเบเบเบญเบญเบเบเบปเบเบเบฐเบเบดเบชเปเบฒเบฅเบฑเบเบเบธเบเป iteration เบเบญเบ "foreach" loop เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเบกเบฑเบเบเปเปเบกเบตเบเบฒเบเบเบตเปเบเบฐ
เบฎเบนเปเบงเปเบฒ $pattern เบเบฐเปเบเบฑเบเปเบเบงเปเบ:
my @patterns = qw(foo bar baz );
LINE: เปเบเบเบฐเบเบฐเบเบตเป( ) {
foreach $pattern ( @patterns ) {
เบเปเบฒ( /\b$เปเบเบ\b/i ) {
เบเบดเบก;
เปเบเบงเบเปเปเปเบ;
}
}
}
เบเบปเบงเบเบฐเบเบดเบเบฑเบเบเบฒเบ "qr//" เบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเปเบ perl 5.005. เบกเบฑเบเบฅเบงเบเบฅเบงเบกเบเบฒเบเบชเบฐเปเบเบเบญเบญเบเบเบปเบเบเบฐเบเบด, เปเบเปเบเปเปเปเบกเปเบ
เบเบณเปเบเปเบกเบฑเบ. เปเบกเบทเปเบญเบเปเบฒเบเปเบเป regex เบชเบฐเบเบฑเบเบเบตเปเบฅเบงเบเบฅเบงเบกเบเปเบญเบ, perl เปเบฎเบฑเบเบงเบฝเบเบซเบเปเบญเบเบฅเบปเบ. เปเบโเบเบตเป
เบเบปเบงเบขเปเบฒเบ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเปเบชเป "เปเบเบเบเบตเป" เปเบเบทเปเบญเบซเบฑเบเปเบเปเบฅเบฐเบฎเบนเบเปเบเบเปเบเบปเปเบฒเปเบเปเบเปเบเบเบเบญเบกเบเบตเปเบฅเบงเบเบฅเบงเบกเปเบงเปเบเปเบญเบ. เบชเปเบงเบเบเบตเปเปเบซเบผเบทเบญเบเบญเบ
script เปเบกเปเบเบเบทเบเบฑเบ, เปเบเปเปเบงเบเบงเปเบฒ:
my @patterns = เปเบเบเบเบตเป { qr/\b$_\b/i } qw( foo bar baz );
LINE: เปเบเบเบฐเบเบฐเบเบตเป( <> ) {
foreach $pattern ( @patterns ) {
เบเปเบฒ( /$pattern/ ) {
เบเบดเบก;
เปเบเบงเบเปเปเปเบ;
}
}
}
เปเบโเบเบฒเบโเบเปโเบฅเบฐโเบเบตโ, เบเปเบฒเบโเบญเบฒเบโเบเบฐโเบชเบฒโเบกเบฒเบโเปเบฎเบฑเบโเปเบซเปโเบซเบผเบฒเบโเบฎเบนเบโเปเบเบโเปเบเบปเปเบฒโเปเบโเปเบโเบเบฒเบโเบชเบฐโเปเบเบโเบญเบญเบโเบเบปเบโเบเบฐโเบเบดโเบเบฝเบงโ.
เบฅเบฐเบงเบฑเบเบชเบฐเบเบฒเบเบฐเบเบฒเบเบเบตเปเบฎเบฝเบเบฎเปเบญเบเปเบซเปเบกเบตเบเบฒเบเบเบดเบเบเบฒเบกเบเบทเบ.
$regex เบเบญเบเบเปเบญเบ = เปเบเบปเปเบฒเบฎเปเบงเบก '|', qw( foo bar baz );
LINE: เปเบเบเบฐเบเบฐเบเบตเป( <> ) {
เบเบดเบกเบเปเบฒ /\b(?:$regex)\b/i;
}
เบชเปเบฒเบฅเบฑเบเบฅเบฒเบเบฅเบฐเบญเบฝเบเปเบเบตเปเบกเปเบเบตเบกเบเปเบฝเบงเบเบฑเบเบเบฐเบชเบดเบเบเบดเบเบฒเบเบเบฒเบเบชเบฐเปเบเบเบญเบญเบเปเบเบฑเบเบเบปเบเบเบฐเบเบด, เปเบเบดเปเบ Mastering เปเบเบฑเบเบเบปเบเบเบฐเบเบด เบชเบณ เบเบงเบ by
Jeffrey Friedl. เบฅเบฒเบงเบญเบฐเบเบดเบเบฒเบเบงเปเบฒเปเบเบทเปเบญเบเบเบฑเบเบเบฒเบเบชเบฐเปเบเบเบญเบญเบเบเบปเบเบเบฐเบเบดเปเบฎเบฑเบเบงเบฝเบเปเบเบงเปเบเปเบฅเบฐเปเบเบฑเบเบซเบเบฑเบเบเบฒเบเบฎเบนเบเปเบเบ
เปเบเบฑเบเปเบฅเบทเปเบญเบเปเบเบเบเบตเปเบเปเปเบกเบตเบเบฐเบชเบดเบเบเบดเบเบฒเบ. เปเบกเบทเปเบญเบเปเบฒเบเปเบเบปเปเบฒเปเบเบงเบดเบเบตเบเบฒเบ perl เปเบเปเบเบฒเบเบชเบฐเปเบเบเบญเบญเบเบเบปเบเบเบฐเบเบด,
เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฑเบเปเบซเปเปเบเบปเบฒเปเบเบปเปเบฒเบชเปเบฒเบฅเบฑเบเบชเบฐเบเบฒเบเบฐเบเบฒเบเบชเปเบงเบเบเบธเบเบเบปเบ.
เปเบเบฑเบเบซเบเบฑเบ เบเปเปเปเบเป เบเบญเบโเปเบเบโเบเปเบฒโเบชเบฑเบโเบเปเบฒเบเปโ เบเบฒเบเบเบญเบเบซเบฒ เบเบฑเบ "\b" เบเบฒเบเปเบฎเบฑเบเบงเบฝเบ เบชเปเบฒเบฅเบฑเบเบเบฒเบ เบเปเบญเบเบเป?
(เบเบฐเบเบญเบเบชเปเบงเบเปเบเบ brian d foy)
เปเบซเปโเปเบเปโเปเบเบงเปโเบฒโเบเปเบฒเบโเบฎเบนเปโเบงเปเบฒ \b เปเบฎเบฑเบโเปเบเบงโเปเบโเปเบเปโ: เบกเบฑเบโเปเบเบฑเบโเปเบเบโเปเบเบโเบฅเบฐโเบซเบงเปเบฒเบโเบฅเบฑเบโเบชเบฐโเบเบฐโเบเปเบฒโเบชเบฑเบโเบเปเบฒเบเปโ, \wโ,
เปเบฅเบฐเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเบเบตเปเบเปเปเปเบกเปเบเบฅเบฑเบเบชเบฐเบเบฐเบเปเบฒเบชเบฑเบ. เบชเบดเปเบเบเบตเปเบเปเปเปเบกเปเบเบฅเบฑเบเบชเบฐเบเบฐเบเปเบฒเบชเบฑเบเบญเบฒเบเบเบฐเปเบเบฑเบ
\W, เปเบเปเบกเบฑเบเบชเบฒเบกเบฒเบเปเบเบฑเบเบเบธเบเปเบฅเบตเปเบกเบเบปเปเบ เบซเบผเบทเบเบธเบเบชเบดเปเบเบชเบธเบเบเบญเบเบชเบฐเบเบฃเบดเบเปเบเป.
เบกเบฑเบโเบเปเปโเปเบกเปเบ (เบเปเป!) เบเบญเบโเปเบเบโเบฅเบฐโเบซเบงเปเบฒเบ whitespace เปเบฅเบฐ non-whitespace, เปเบฅเบฐโเบกเบฑเบโเบเปเปโเปเบกเปเบโเบชเบดเปเบโเบเบญเบ
เบฅเบฐเบซเบงเปเบฒเบเบเปเบฒเบเบตเปเบเบงเบเปเบฎเบปเบฒเปเบเปเปเบเบทเปเบญเบชเปเบฒเบเบเบฐเปเบซเบเบ.
เปเบ regex เปเบงเบปเปเบฒ, เบเบญเบเปเบเบเบเปเบฒเบชเบฑเบ (\b) เปเบกเปเบ "เบเบฒเบเบขเบทเบเบขเบฑเบเบเบงเบฒเบกเบเบงเปเบฒเบเบชเบนเบ", เบเบถเปเบเบซเบกเบฒเบเบเบงเบฒเบกเบงเปเบฒเบกเบฑเบเบเปเปเปเบกเปเบ.
เปเบเบฑเบเบเบปเบงเปเบเบเบเบญเบเบเบปเบงเบญเบฑเบเบชเบญเบเปเบเบชเบฐเบเบฃเบดเบ, เปเบเปเปเบเบทเปเบญเบเปเบเบขเบนเปเปเบเบเปเบฒเปเบซเบเปเบเบเบตเปเปเบเปเบเบญเบ.
เบชเปเบฒเบฅเบฑเบเบเบฒเบเบชเบฐเปเบเบเบญเบญเบเบเบปเบเบเบฐเบเบด, /\bPerl\b/, เบเปเบญเบเบกเบตเบเบญเบเปเบเบเบเปเบฒเบชเบฑเบเบเปเบญเบ "P" เปเบฅเบฐ.
เบซเบผเบฑเบเบเบฒเบ "l". เบเบฒเบเปเบเบเบตเปเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเบเบญเบเปเปเบทเบญเปเบเบเบฒเบเบเบปเบงเบฅเบฐเบเบญเบเบเบณเบชเบฑเบเบเปเบญเบเปเปเบฒ "P" เปเบฅเบฐ
เบชเปเบฒเปเบฅเบฑเบ "l", เบฎเบนเบเปเบเบเบเบฐเบเบปเบเบเบฑเบ. เบชเบฐเบเบฃเบดเบเปเบซเบผเบปเปเบฒเบเบตเปเบเบปเบเบเบฑเบ /\bPerl\b/.
"Perl" # เบเปเปเบกเบตเบเปเบฒเบชเบฑเบ char เบเปเบญเบ P เบซเบผเบทเบซเบผเบฑเบเบเบฒเบ l
"Perl" # เบเบทเบเบฑเบเบเบฑเบเบเบตเปเบเปเบฒเบเบกเบฒ (เบเบฐเบซเบงเปเบฒเบเบเปเปเปเบกเปเบเบเปเบฒเบชเบฑเบ char)
"'Perl'" # the 'char เบเปเปเปเบกเปเบเบเบณเบงเปเบฒ char
"Perl's" # เบเปเปเบกเบตเบเปเบฒเบชเบฑเบ char เบเปเบญเบ P, เบเปเปเปเบกเปเบเบเปเบฒเบชเบฑเบ char เบซเบผเบฑเบเบเบฒเบ "l"
เบชเบฐเบเบฃเบดเบเปเบซเบผเบปเปเบฒเบเบตเปเบเปเปเบเบปเบเบเบฑเบ /\bPerl\b/.
"Perl_" # _ เปเบเบฑเบเบเปเบฒ char!
"Perler" # เบเปเปเบกเบตเบเปเบฒเบชเบฑเบ char เบเปเบญเบ P, เปเบเปเบซเบเบถเปเบเบซเบผเบฑเบเบเบฒเบ l
เบเปเบฒเบเบเปเปเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเป \b เปเบเบทเปเบญเบเบฑเบเบเบนเปเบเปเบฒเบชเบฑเบเบเปเบฒเบเป. เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบญเบเบซเบฒเบเบปเบงเบญเบฑเบเบชเบญเบเบเบตเปเบเปเปเปเบกเปเบเบเปเบฒเบชเบฑเบ
เบญเปเบญเบกเบฎเบญเบเบเปเบงเบเบเบปเบงเบญเบฑเบเบชเบญเบเบเปเบฒเบชเบฑเบ. เบชเบฐเบเบฃเบดเบเปเบซเบผเบปเปเบฒเบเบตเปเบเบปเบเบเบฑเบเบฎเบนเบเปเบเบ /\b'\b/.
"เบขเปเบฒ" # 'char เปเบกเปเบเบญเปเบญเบกเบฎเบญเบเบเปเบงเบ "n" เปเบฅเบฐ "t"
"qep'a'" # the 'char เปเบกเปเบเบญเปเบญเบกเบฎเบญเบเบเปเบงเบ "p" เปเบฅเบฐ "a"
เบชเบฐเบเบฃเบดเบเปเบซเบผเบปเปเบฒเบเบตเปเบเปเปเบเบปเบเบเบฑเบ /\b'\b/.
"foo'" # เบเปเปเบกเบตเบเปเบฒเบชเบฑเบ char เบซเบผเบฑเบเบเบฒเบเบเปเปเปเบกเปเบเบเปเบฒเบชเบฑเบ '
เบเปเบฒเบเบเบฑเบเบชเบฒเบกเบฒเบเปเบเปเบเบฒเบเปเบชเบตเบกเบเบญเบ \b, \B, เปเบเบทเปเบญเบฅเบฐเบเบธเบงเปเบฒเบเปเปเบเบงเบเบกเบตเบเปเบฒ
เปเบเบเปเบเบ.
เปเบเบฎเบนเบเปเบเบ /\Bam\B/, เบเปเบญเบเบกเบตเบเบปเบงเบญเบฑเบเบชเบญเบเบเปเบญเบ "a" เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบ "m".
เบฎเบนเบเปเบเบเปเบซเบผเบปเปเบฒเบเบตเปเบเบปเบเบเบฑเบ /\Bam\B/:
"llama" # "am" เบญเปเบญเบกเบฎเบญเบเบเปเบงเบเบเบปเบงเบญเบฑเบเบชเบญเบเบเปเบฒเบชเบฑเบ
"เบเบฒเบกเบนเปเบญเบ" # เบเบทเบเบฑเบ
เบชเบฐเบเบฃเบดเบเปเบซเบผเบปเปเบฒเบเบตเปเบเปเปเบเบปเบเบเบฑเบ /\Bam\B/
"เปเบเบก" # เบเปเปเบกเบตเบเบณเบงเปเบฒเปเบเบเปเบเบเบเปเบญเบ "เบ", เปเบเปเบกเบตเบเบณเปเบถเปเบเบซเบผเบฑเบ "เบก"
"เบเปเบฒเบเบฐเปเบเบปเปเบฒ Sam" # "am" เบญเปเบญเบกเบฎเบญเบเบเปเบงเบเบเบปเบงเบญเบฑเบเบชเบญเบเบเบตเปเบเปเปเปเบกเปเบเบเปเบฒเบชเบฑเบ
เปเบเบฑเบเบซเบเบฑเบ เบเปเป เบเบฒเบเบเปเบฒเปเบเป $&, $`, or $' เบเปเบฒ my เปเบเบเบเบฒเบ เบฅเบปเบ?
(เบเบฐเบเบญเบเบชเปเบงเบเปเบเบ Anno Siegel)
เปเบกเบทเปเบญ Perl เปเบซเบฑเบเบงเปเบฒเบเปเบฒเบเบเปเบญเบเบเบฒเบเบซเบเบถเปเบเปเบเบเบปเบงเปเบเปเบซเบผเบปเปเบฒเบเบตเปเบขเบนเปเบเบธเบเบเปเบญเบเปเบเปเบเบเบเบฒเบ, เบกเบฑเบเบชเบฐเบซเบเบญเบ
เบเบงเบเบกเบฑเบเบขเบนเปเปเบเปเบเปเบฅเบฐเบฎเบนเบเปเบเบเบเบตเปเบเบปเบเบเบฑเบ. เบเบฑเปเบ เปเบฒเบ เบเบงเบฒเบกเบงเปเบฒเปเบเบเบธเบเปเบฎเบนเบเปเบเบเบเบปเบเบเบฑเบเบเบฑเบ เปเบปเบ
string เบเบฐเบเบทเบเบเบฑเบเบฅเบญเบ, เบชเปเบงเบเบเบญเบเบกเบฑเบเปเบเบฑเบ $`, เบชเปเบงเบเปเบเบฑเบ $&, เปเบฅเบฐเบชเปเบงเบเปเบเบฑเบ $'. เบเบฑเปเบเบเบฑเปเบเบเบฒเบเบฅเบปเบเปเบเบเปเบกเปเบ
เบฎเปเบฒเบเปเบฎเบเบเบตเปเบชเบธเบเบเปเบงเบเบชเบฒเบเบเบฒเบง เปเบฅเบฐเบฎเบนเบเปเบเบเบเบตเปเบเบปเบเบเบฑเบเปเบฅเบทเปเบญเบเป. เบซเบผเบตเบเปเบงเบฑเปเบ $&, $', เปเบฅเบฐ $` เบเปเบฒเบเปเบฒเบ
เบชเบฒเบกเบฒเบ, เปเบเปเบเปเบฒเบเปเบฒเบเปเบฎเบฑเบเบเปเปเปเบเป, เปเบกเบทเปเบญเบเปเบฒเบเปเบเปเปเบเปเบเบงเบเบกเบฑเบเบเบฑเบเบซเบกเบปเบ, เปเบซเปเปเบเปเบเบงเบเบกเบฑเบเบเบฒเบกเบเบงเบฒเบกเบเบฑเปเบเปเบเปเบเบฒเบฐเบงเปเบฒเบเปเบฒเบเปเบเป
เบเปเบฒเบเบเปเบฒเบฅเบฒเบเบฒเปเบฅเปเบง. เบเบทเปเปเบงเปเบงเปเบฒเบเบฒเบเบญเบฑเบเบเปเบฃเบดเบเบถเบกเบฎเบนเปเบเบฑเบเปเบเบปเบฒเปเบเบปเปเบฒเปเบเปเป. เปเบเบฑเบเบเบญเบ
5.005 เบเปเบญเบ, $& variable เปเบกเปเบเบเปเป "เปเบเบ" เปเบเบเบเบตเปเบชเบญเบเบญเบทเปเบเป.
เบเบฑเบเบเบฑเปเบเปเบเป Perl 5.6.1 เบเบปเบงเปเบเบเบดเปเบชเบ @- เปเบฅเบฐ @+ เบชเบฒเบกเบฒเบเบเปเบฝเบเปเบเบ $`, $& เปเบฅเบฐ $'.
array เปเบซเบผเบปเปเบฒเบเบตเปเบกเบตเบเบปเบงเบเบตเปเปเบเบซเบฒเบเบธเบเปเบฅเบตเปเบกเบเบปเปเบ เปเบฅเบฐเบเบธเบเบชเบดเปเบเบชเบธเบเบเบญเบเปเบเปเบฅเบฐเบเบฒเบเปเบเปเบเบเบฑเบ (เปเบเบดเปเบ perlvar เบชเปเบฒเบฅเบฑเบ
เปเบเบฑเบกเปเบฅเบทเปเบญเบ), เบเบฑเปเบเบเบฑเปเบเปเบเบปเบฒเปเบเบปเปเบฒเปเบซเปเบเปเบฒเบเปเบเบฑเบเบเปเปเบกเบนเบเบเบฝเบงเบเบฑเบเบเบตเปเบชเปเบฒเบเบฑเบ, เปเบเปเบเปเปเบกเบตเบเบงเบฒเบกเบชเปเบฝเบเบเบญเบ
เบเบฒเบเบเบฑเบเบฅเบญเบเบชเบฐเบเบฃเบดเบเบซเบผเบฒเบเปเบเบตเบเปเบ.
Perl 5.10 เปเบเบตเปเบกเบชเบฒเบกเบเบดเปเบชเบ, "${^MATCH}", "${^PREMATCH}", เปเบฅเบฐ "${^POSTMATCH}" เปเบเบทเปเบญเปเบฎเบฑเบ
เบงเบฝเบเบเบฝเบงเบเบฑเบเปเบเปเบเปเปเบกเบตเบเบฒเบเบฅเบปเบเปเบเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบปเปเบงเปเบฅเบ. Perl 5.10 เบเบฝเบเปเบเปเบเปเบฒเบเบปเบเบเบปเบงเปเบเปเบซเบผเบปเปเบฒเบเบตเป
เบเปเบฒเบเปเบฒเบเบฅเบงเบเบฅเบงเบกเบซเบผเบทเบเบฐเบเบดเบเบฑเบเบเบฒเบเบชเบฐเปเบเบเบญเบญเบเบเบปเบเบเบฐเบเบดเบเปเบงเบเบเบปเบงเปเบเปเปเบ "/p".
เปเบกเปเบโเบซเบเบฑเบ เบเบต is "\G" in a เบเบปเบเบเบฐเบเบด เบเบฒเบเบชเบฐเปเบเบเบญเบญเบ?
เบเปเบฒเบเปเบเปเบชเบฐเบกเป "\G" เปเบเบทเปเบญเปเบฅเบตเปเบกเบเบปเปเบเบเบฒเบเปเบเปเบเบเบฑเบเบเปเปเปเบเปเบเบชเบฐเบเบฃเบดเบเบเบฝเบงเบเบฑเบเบเบตเปเบเบปเบเบเบฑเบเบชเบธเบเบเปเบฒเบ
เบเบฐเปเบงเป. เปเบเบทเปเบญเบเบเบฑเบเบเบฒเบเบชเบฐเปเบเบเบญเบญเบเบเบปเบเบเบฐเบเบดเบเปเปเบชเบฒเบกเบฒเบเบเปเบฒเบกเบเบปเบงเบญเบฑเบเบชเบญเบเปเบเปเปเบเบทเปเบญเบเบญเบเบซเบฒเบเปเปเปเบ
เบเบฑเบเบเบนเปเบเบฑเบเบชเบฐเบกเปเบเบตเป, เบเบฑเปเบเบเบฑเปเบ "\G" เปเบกเปเบเบเปเบฒเบเบเบทเบเบฑเบเบเบฑเบเบเบฒเบเปเบฅเบตเปเบกเบเบปเปเบเบเบญเบเบชเบฐเบกเป, "^". เปเบเป
เปเบเบเบเบปเปเบงเปเบเปเบฅเปเบงเบชเบฐเบกเป "\G" เปเบกเปเบเปเบเปเบเบฑเบเบเบธเบ "g". เบกเบฑเบเปเบเปเบเปเบฒเบเบญเบ "pos()" เปเบเบฑเบ
เบเปเบฒเปเบซเบเปเบเปเบเบทเปเบญเปเบฅเบตเปเบกเบเบปเปเบเบเบฒเบเปเบเปเบเบเบฑเบเบเปเปเปเบ. เปเบเบเบฐเบเบฐเบเบตเปเบเบนเปเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเบฑเบเบเบนเปเปเบฎเบฑเบเปเบซเปเบเบฒเบเปเบเปเบเบเบฑเบเบขเปเบฒเบเบเปเปเปเบเบทเปเบญเบ, เบกเบฑเบ
เบเบฑเบเบเบธเบ "pos()" เบเบฑเบเบเปเบฒเปเบซเบเปเบเบเบญเบเบฅเบฑเบเบชเบฐเบเบฐเบเปเปเปเบเบเบตเปเบเปเบฒเบเบกเบฒเบเบตเปเบเปเบฒเบเบกเบฒ (เบซเบผเบทเบเปเบฒเบญเบดเบ
เบฅเบฑเบเบชเบฐเบเบฐเบเบญเบเบเบฒเบเปเบเปเบเบเบฑเบเบเปเปเปเบ, เบเบถเปเบเบเบฑเบเบงเบดเบเบตเบเบตเปเปเบเบปเปเบฒเบกเบฑเบเปเบเบดเปเบเบกเบฑเบ). เปเบเปเบฅเบฐเบชเบฒเบเบกเบตเบเบญเบเบกเบฑเบ
เบเปเบฒ "pos()" เบเบญเบเบเบปเบเปเบญเบ.
เบชเบปเบกเบกเบธเบเบงเปเบฒเบเปเบฒเบเบเปเบญเบเบเบฒเบเบเบฑเบเบเบนเปเบเบปเบงเปเบฅเบเบเบดเบเบเปเปเบเบฑเบเบเบฑเบเปเบปเบเปเบเบชเบฐเบเบฃเบดเบเปเบเบฑเปเบ "1122a44"
เปเบฅเบฐเบขเบธเบเบเบฒเบเบเบฑเบเบเบนเปเปเบกเบทเปเบญเบเปเบฒเบเบเบปเบเบเบฑเบเบเบปเบงเปเบฅเบเบเบตเปเบเปเปเปเบกเปเบเบเบปเบงเปเบฅเบ. เบเปเบฒเบเบเปเบญเบเบเบฒเบเบเบฑเบเบเบนเป 11 เปเบฅเบฐ 22 เปเบเป
เบเบปเบงเบญเบฑเบเบชเบญเบ เบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเปเบเบดเบเบฅเบฐเบซเบงเปเบฒเบ 22 เปเบฅเบฐ 44 เปเบฅเบฐเบเปเบฒเบเบเปเบญเบเบเบฒเบเบขเบธเบเบขเบนเปเบเบตเป "a". เบเบฝเบเปเบเปเบเบฑเบเบเบนเปเบเบนเป
เบเบปเบงเปเบฅเบเบเปเบฒเบก "a" เปเบฅเบฐเบเบฑเบเบเบปเบเบเบฑเบ 44.
$_ = "1122a44";
my @pairs = m/(\d\d)/g; # qw( 11 22 44 )
เบเปเบฒเบเปเบฒเบเปเบเปเบชเบฐเบกเป "\G", เบเปเบฒเบเบเบฑเบเบเบฑเบเบเบฒเบเบเบฑเบเบเบนเปเบซเบผเบฑเบเบเบฒเบ 22 เปเบเบทเปเบญเปเบฅเบตเปเบกเบเบปเปเบเบเปเบงเบ "a". เปเบเป
เบเบฒเบเบชเบฐเปเบเบเบญเบญเบเบเบปเบเบเบฐเบเบดเบเปเปเบชเบฒเบกเบฒเบเบเบฑเบเบเบนเปเบขเบนเปเบเบตเปเบเบฑเปเบเปเบเบทเปเบญเบเบเบฒเบเบกเบฑเบเบเปเปเบเบปเบเบเบปเบงเปเบฅเบ, เบเบฑเปเบเบเบฑเปเบเบเบฒเบเบเบฑเบเบเบนเปเบเปเปเปเบ
เบฅเบปเปเบกเปเบซเบฅเบง เปเบฅเบฐเบเบนเปเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเบฑเบเบเบนเปเบเบฐเบชเบปเปเบเบเบทเบเบเบนเปเบเบตเปเบกเบฑเบเบเบปเบเปเบฅเปเบง.
$_ = "1122a44";
my @pairs = m/\G(\d\d)/g; # qw( 11 22 )
เบเปเบฒเบเบเบฑเบเบชเบฒเบกเบฒเบเปเบเปเบชเบฐเบกเป "\G" เปเบเบเปเบฅเบดเบเบปเบเบชเบฐเปเบเบฑเบเปเบเบดเบเปเบเป. เบเปเบฒเบเบเบฑเบเบเปเบญเบเบเบฒเบเบเบธเบ "g".
$_ = "1122a44";
เปเบเบเบฐเบเบฐเบเบตเป( m/\G(\d\d)/g ) {
เบเบดเบก "เบเบปเบ $1\n";
}
เบซเบผเบฑเบโเบเบฒเบโเบเบฒเบโเปเบเปเบโเบเบฑเบโเบเปเปโเบชเปเบฒโเปเบฅเบฑเบโเบขเบนเปโเปเบโเบเบปเบงโเบญเบฑเบโเบชเบญเบ "aโ"โ, perl reset "pos()โ" เปเบฅเบฐโเบเบฒเบโเปเบเปเบโเบเบฑเบโเบเปเปโเปเบโเปเบโ
เบชเบฒเบเบเบฝเบงเบเบฑเบเปเบฅเบตเปเบกเบเบปเปเบเปเบเบเบญเบเปเบฅเบตเปเบกเบเบปเปเบ.
$_ = "1122a44";
เปเบเบเบฐเบเบฐเบเบตเป( m/\G(\d\d)/g ) {
เบเบดเบก "เบเบปเบ $1\n";
}
เบเบดเบก "Found $1 after while" เบเปเบฒ m/(\d\d)/g; # เบเบปเบ "11"
เบเปเบฒเบโเบชเบฒโเบกเบฒเบโเบเบดเบโเบเบฒเบโเบเปเบฒโเบเบฒเบ "pos()โ" เบเบฑเบโเปเบซเบกเปโเปเบโเบเบฒเบโเบฅเบปเปเบกโเปเบซเบผเบงโเบเปเบงเบโเบเบธเบ "cโ"โ, เปเบญโเบเบฐโเบชเบฒเบโเปเบ perlop เปเบฅเบฐโ
perlreref. เบเบฒเบเปเบเปเบเบเบฑเบเบเปเปเบกเบฒเปเบฅเบตเปเบกเบเบปเปเบเบเปเบญเบเบเบตเปเบเบฒเบเปเบเปเบเบเบฑเบเบเบตเปเบชเปเบฒเปเบฅเบฑเบเบเบปเบเบชเบธเบเบเปเบฒเบเบชเบดเปเบเบชเบธเบเบฅเบปเบ (เบกเบนเบเบเปเบฒเบเบญเบ
"pos()") เปเบเบดเบเปเบกเปเบเบงเปเบฒเบเบฒเบเบเบฑเบเบเบนเปเบขเบนเปเปเบเบชเบฐเบเบฃเบดเบเบเบฝเบงเบเบฑเบเบเบฐเบฅเบปเปเบกเปเบซเบฅเบงเปเบเปเบงเบฅเบฒเบเบตเป. เปเบเบเปเบฅเบฐเบเบตเบเบฑเปเบเบเปเบฒเบงเบเบตเป, เปเบเป
เบเบฒเบเบเบฑเบเบเบนเปเบซเบผเบฑเบเบเบฒเบเบงเบปเบ "while()" เปเบฅเบตเปเบกเบเบปเปเบเบเบตเป "a" (เบเปเบญเบเบเบตเปเบเบฒเบเปเบเปเบเบเบฑเบเบชเบธเบเบเปเบฒเบเบขเบธเบ), เปเบฅเบฐเบเบฑเบเบเบฑเปเบเปเบเป
เบกเบฑเบเบเปเปเปเบเปเปเบเปเบชเบฐเบกเปเปเบเปเบเบตเปเบกเบฑเบเบชเบฒเบกเบฒเบเบเปเบฒเบกเบเปเบฒเบ "a" เปเบเบทเปเบญเบเบญเบเบซเบฒ 44.
$_ = "1122a44";
เปเบเบเบฐเบเบฐเบเบตเป(m/\G(\d\d)/gc ) {
เบเบดเบก "เบเบปเบ $1\n";
}
เบเบดเบก "Found $1 after while" เบเปเบฒ m/(\d\d)/g; # เบเบปเบ "44"
เปเบเบเบเบปเบเบเบฐเบเบดเบเปเบฒเบเปเบเปเบชเบฐเบกเป "\G" เบเบฑเบเบเบธเบ "c" เปเบกเบทเปเบญเบเปเบฒเบเบเปเบญเบเบเบฒเบเบฅเบญเบเบเบฒเบเบเบฑเบเบเบนเปเบญเบทเปเบ
เบเปเบฒเบซเบเบถเปเบเบฅเบปเปเบกเปเบซเบฅเบง, เปเบเบฑเปเบเปเบ tokenizer. Jeffrey Friedl เบชเบฐเปเบซเบเบตเบเบปเบงเบขเปเบฒเบเบเบตเปเบเบตเปเปเบฎเบฑเบเบงเบฝเบเบขเบนเปเปเบ
5.004 เบซเบผเบทเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ.
เปเบเบเบฐเบเบฐเบเบตเป (<>) {
chomp;
เบเบปเบงเบงเบดเปเบเบฒเบฐ: {
m/ \G( \d+\b )/gcx && do {เบเบดเบก "เบเบปเบงเปเบฅเบ: $1\n"; เปเบฎเบฑเบเบเบทเบ; } ;
m/ \G( \w+ )/gcx && do {เบเบดเบก "เบเบณเบชเบฑเบ: $1\n"; เปเบฎเบฑเบเบเบทเบ; } ;
m/ \G(\s+ )/gcx && do {เบเบดเบก "space: $1\n"; เปเบฎเบฑเบเบเบทเบ; } ;
m/ \G( [^\w\d]+ )/gcx && do {เบเบดเบก "other: $1\n"; เปเบฎเบฑเบเบเบทเบ; } ;
}
}
เบชเปเบฒเบฅเบฑเบเปเบเปเบฅเบฐเปเบเบง, "PARSER" loop เบเปเบฒเบญเบดเบเบเบฐเบเบฒเบเบฒเบกเบเบฑเบเบเบนเปเบเบธเบเบเบปเบงเปเบฅเบเบเบฒเบกเบเปเบงเบ a
เบเบญเบโเปเบเบโเบเปเบฒโเบชเบฑเบโเบเปเบฒเบเปโ. เบเบฒเบโเปเบเปเบโเบเบฑเบโเบเบตเปโเบเปเบญเบโเปเบฅเบตเปเบกโเบเบปเปเบโเปเบโเบชเบฐโเบเบฒเบโเบเบตเปโเบเบฒเบโเปเบเปเบโเบเบฑเบโเบชเบธเบโเบเปเบฒเบโเบเบฐโเปเบงเป (เบซเบผเบทโ
เบเบฒเบเปเบฅเบตเปเบกเบเบปเปเบเบเบญเบเบชเบฐเบเบฃเบดเบเปเบเบเบฒเบเปเบเปเบเบเบฑเบเบเบฑเปเบเบเปเบฒเบญเบดเบ). เปเบเบทเปเบญเบเบเบฒเบ "m/ \G( \d+\b )/gcx" เปเบเปเบเบธเบ "c",
เบเปเบฒเบชเบฐเบเบฃเบดเบเบเปเปเบเบปเบเบเบฑเบเบเบฒเบเบชเบฐเปเบเบเบเบปเบเบเบปเบเบเบฐเบเบดเบเบฑเปเบ, perl เบเบฐเบเปเปเบเบฑเปเบเบเปเบฒเปเปเป pos() เปเบฅเบฐ
เบเบฒเบเปเบเปเบเบเบฑเบเบเปเปเปเบเบเบฐเปเบฅเบตเปเบกเบเบฒเบเบเบณเปเปเปเบเบเบฝเบงเบเบฑเบเปเบเบทเปเบญเบฅเบญเบเปเบเปเบฎเบนเบเปเบเบเบญเบทเปเบ.
เบกเบต Perl regexes DFAs or NFAs? เบกเบต เบเบงเบเปเบเบปเบฒเปเบเบปเปเบฒ POSIX เบชเบญเบเบเปเบญเบ?
เปเบเบเบฐเบเบฐเบเบตเปเบกเบฑเบเปเบเบฑเบเบเบงเบฒเบกเบเบดเบเบเบตเปเบงเปเบฒเบเบฒเบเบชเบฐเปเบเบเบญเบญเบเบเบปเบเบเบฐเบเบดเบเบญเบ Perl เบเปเบฒเบเบเบทเบเบฑเบ DFAs (เบเปเบฒเบเบปเบเบเบญเบเปเบเบเบเปเบฒเบเบฑเบ
automata) เบเบญเบ เบเบปเบงเบขเปเบฒเบ(1) เปเบเบเบเบฒเบ, เบเบงเบเปเบเบปเบฒเปเบเบปเปเบฒเปเบกเปเบเปเบเบเบงเบฒเบกเปเบเบฑเบเบเบดเบเบเบฐเบเบดเบเบฑเบเปเบเบฑเบ NFAs (เบเปเปเบเปเบฒเบเบปเบ
automata finite) เปเบเบทเปเบญเบญเบฐเบเบธเบเบฒเบเปเบซเป backtracking เปเบฅเบฐ backreferencing. เปเบฅเบฐเบเบงเบเบกเบฑเบเบเปเปเปเบกเปเบเปเบเบ POSIX
เบเปเปเบงเปเบฒเบเบฐเปเบเบฑเบ, เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเบเบฒเบเบฎเบฑเบเบเบฐเบเบฑเบเบเบฒเบเบเบฐเบเบถเบเบเบตเปเบฎเปเบฒเบเปเบฎเบเบเบตเปเบชเบธเบเบชเปเบฒเบฅเบฑเบเบเบธเบเบเปเบฅเบฐเบเบต. (เปเบเบดเปเบเบเบทเบงเปเบฒเบเบฒเบ
เบเบฐเบเบฒเบเบปเบเบกเบฑเบเบเบฒเบเบฎเบฑเบเบเบฐเบเบฑเบเบเบงเบฒเบกเบชเบญเบเบเปเบญเบ, เปเบเบดเบเปเบกเปเบเบงเปเบฒเบชเบดเปเบเบเบตเปเบฎเบฑเบเบเบฐเบเบฑเบเปเบกเปเบเบเบงเบฒเบกเบเปเบฒ.) เปเบเบดเปเบ
เบเบทเปเบก "Mastering Regular Expressions" (เบเบฒเบ O'Reilly) เปเบเบ Jeffrey Friedl เบชเปเบฒเบฅเบฑเบเบฅเบฒเบเบฅเบฐเบญเบฝเบเบเบฑเบเบซเบกเบปเบ
เปเบเบปเปเบฒเบชเบฒเบกเบฒเบเบซเบงเบฑเบเบงเปเบฒเบเบฐเบฎเบนเปเบเปเบฝเบงเบเบฑเบเปเบฅเบทเปเบญเบเปเบซเบผเบปเปเบฒเบเบตเป (เบเบฒเบเบญเปเบฒเบเบญเบตเบเปเบเบฑเบกเบเบตเปเบเบฒเบเบปเบเบขเบนเปเปเบ perlfaq2).
เปเบกเปเบเบซเบเบฑเบ เบเบดเบเบเบฒเบ เบเบฑเบ เบเบฒเบเบเปเบฒเปเบเป grep in a void เบชเบฐเบเบฒเบเบเบฒเบ?
เบเบฑเบเบซเบฒเปเบกเปเบเบงเปเบฒ grep เบเปเปเบชเปเบฒเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบฑเบเบเบทเบ, เปเบเบเบเปเปเบเปเบฒเบเบถเบเปเบเบดเบเบชเบฐเบเบฒเบเบเบฒเบ. เบเบตเปโเบซเบกเบฒเบโเบเบงเบฒเบกโเบงเปเบฒ
เบเปเบฒเบเบเปเบฒเบฅเบฑเบเปเบฎเบฑเบเปเบซเป Perl เปเบเบซเบฒเบเบฑเบเบซเบฒเบเบญเบเบเบฒเบเบชเปเบฒเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบตเปเบเปเบฒเบเบเบฝเบเปเบเปเบเบดเปเบกเปเบ. เบเปเบฒ
เบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเปเบกเปเบเบเบฐเบซเบเบฒเบเปเบซเบเป, เบเปเบฒเบเปเบชเบเปเบงเบฅเบฒเปเบฅเบฐเบเบทเปเบเบเบตเป. เบเปเบฒโเบซเบฒเบโเบงเปเบฒโเบเบงเบฒเบกโเบเบฑเปเบโเปเบโเบเบญเบโเบเปเบฒเบโเปเบกเปเบโเปเบเบทเปเบญ iterate เปเบโเปเบฅโเบเบฐโ
เบเบฑเบเบเบตเบฅเบฒเบเบเบทเป, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเปเบเปเบชเปเบฒเบฅเบฑเบ loop เบชเปเบฒเบฅเบฑเบเบเบธเบเบเบฐเบชเบปเบเบเบตเป.
เปเบ perls เปเบเบปเปเบฒเบเบงเปเบฒ 5.8.1, เปเบเบเบเบตเปเบเบปเบเบเบธเบเบเบฒเบเบเบฑเบเบซเบฒเบเบตเปเปเบเบฑเปเบเบเบฑเบ. เปเบเปเบเบฑเบเบเบฑเปเบเปเบเป 5.8.1, เบเบตเป
เปเบเปเบเบทเบเปเบเปเปเบเปเบฅเปเบง, เปเบฅเบฐเปเบเบเบเบตเปเปเบกเปเบเบฎเบฑเบเบฎเบนเปเบชเบฐเบเบฒเบเบเบฒเบ - เปเบเบเปเบฅเบดเบเบปเบเบเบตเปเปเบเบฑเบเปเบกเบเบฐ, เบเปเปเบกเบตเบฅเบฒเบเบเบทเปเปเบเบเบทเบเบชเปเบฒเบเบเบทเปเบ.
เบงเบดเบเบตเบเบฒเบ เบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเป I เบเบฒเบเปเบเปเบเบเบฑเบ strings เบเบฑเบ multibyte เบเบปเบงเบฅเบฐเบเบญเบ?
เปเบฅเบตเปเบกเบเบปเปเบเบเบฒเบ Perl 5.6 Perl เปเบเปเบกเบตเบเบฒเบเบฅเบฐเบเบฑเบเบเบญเบเบเบฒเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบฅเบฑเบเบชเบฐเบเบฐ multibyte. Perl 5.8 เบซเบผเบท
เบเปเปเบกเบฒเปเบกเปเบเปเบเบฐเบเปเบฒ. repertoires เบฅเบฑเบเบชเบฐเบเบฐ multibyte เบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบเบฐเบเบญเบเบกเบต Unicode, เปเบฅเบฐ
เบเบฒเบเปเบเบปเปเบฒเบฅเบฐเบซเบฑเบเปเบเบเปเบเบปเปเบฒเบเปเบฒเบเปเบกเบเบนเบเบเบฒเบเปเบเบปเปเบฒเบฅเบฐเบซเบฑเบ. เปเบเบดเปเบ perluniintro, perlunicode, เปเบฅเบฐเปเบเบปเปเบฒเบฅเบฐเบซเบฑเบ.
เบเปเบฒเบเปเบฒเบเบเบดเบเบขเบนเปเบเบฑเบ Perls เปเบเบปเปเบฒ, เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบฎเบฑเบ Unicode เบเปเบงเบ Unicode:: String module, เปเบฅเบฐ
เบเบฒเบเบเปเบฝเบเบเบปเบงเบญเบฑเบเบชเบญเบเปเบเบเปเบเป Unicode::Map8 เปเบฅเบฐ Unicode::Map modules. เบเปเบฒเบเปเบฒเบเบเปเบฒเบฅเบฑเบเปเบเป
เบเบฒเบเปเบเบปเปเบฒเบฅเบฐเบซเบฑเบเบเบฒเบชเบฒเบเบตเปเบเบธเปเบ, เบเปเบฒเบเบญเบฒเบเบเบฐเบฅเบญเบเปเบเป jperl 5.005_03.
เบชเบธเบเบเปเบฒเบ, เบงเบดเบเบตเบเบฒเบเบเบฑเปเบเบเปเปเปเบเบเบตเปเปเบเปเบเบทเบเบชเบฐเปเบซเบเบตเปเบเบ Jeffrey Friedl, เบเบปเบเบเบงเบฒเบกเปเบ
เบชเบฐเบเบฑเบ #5 เบเบญเบเบงเบฒเบฅเบฐเบชเบฒเบ Perl เปเบงเบปเปเบฒเบเปเบฝเบงเบเบฑเบเปเบฅเบทเปเบญเบเบเบตเป.
เปเบซเปเบชเบปเบกเบกเบธเบเบงเปเบฒเปเบเบปเปเบฒเบกเบตเบเบฒเบเปเบเบปเปเบฒเบฅเบฐเบซเบฑเบ Martian เปเบเบเป เบเปเบญเบเบเบตเปเบกเบตเบเบปเบงเบญเบฑเบเบชเบญเบเบเบปเบงเบเบดเบกเปเบซเบเป ASCII เบเบนเป.
encode เบเบปเบงเบญเบฑเบเบชเบญเบ Martian เบเบฝเบง (เปเบเบฑเปเบ: เบชเบญเบ bytes "CV" เบชเปเบฒเบเบเบปเบเบซเบกเบฒเบ Martian เบเบฝเบง, เปเบเบฑเปเบเบเบฝเบงเบเบฑเบ
เบชเบญเบ bytes "SG", "VS", "XX", เปเบฅเบฐเบญเบทเปเบเป). bytes เบญเบทเปเบเปเปเบเบฑเบเบเบปเบงเปเบเบเบเบญเบเบเบปเบงเบญเบฑเบเบชเบญเบเบเบฝเบง, เบเบทเบเบฑเบเบเบฑเบ
ASCII.
เบเบฑเปเบเบเบฑเปเบ, เบเปเบญเบเปเบเปเบเบญเบ Martian "เบเปเบญเบเปเบกเปเบ CVSGXX!" เปเบเป 12 bytes เปเบเบทเปเบญเปเบเบปเปเบฒเบฅเบฐเบซเบฑเบเปเบเบปเปเบฒเบเบปเบงเบญเบฑเบเบชเบญเบ 'I',
', 'a', 'm', ' ', 'CV', 'SG', 'XX', '!'.
เบเบญเบเบเบตเป, เปเบซเปเปเบงเบปเปเบฒเบงเปเบฒเบเปเบฒเบเบเปเบญเบเบเบฒเบเบเบปเปเบเบซเบฒเบเบปเบงเบญเบฑเบเบชเบญเบเบเบฝเบง "/GX/". Perl เบเปเปเบฎเบนเปเบเปเบฝเบงเบเบฑเบ
Martian, เบเบฑเปเบเบเบฑเปเบเบกเบฑเบเบเบฐเบเบปเบเปเบซเบฑเบเบชเบญเบ bytes "GX" เปเบ "เบเปเบญเบเปเบกเปเบ CVSGXX!" string, เปเบเบดเบเปเบกเปเบเบงเปเบฒ
เบฅเบฑเบเบชเบฐเบเบฐเบเปเปเปเบเปเบขเบนเปเบเบตเปเบเบฑเปเบ: เบกเบฑเบเปเบเบดเปเบเบเบทเบงเปเบฒเบกเบฑเบเปเบเบฑเบเบเปเบญเบเบงเปเบฒ "SG" เบขเบนเปเปเบเปเบเบฑเบ "XX", เปเบเปเบงเปเบฒเบกเบต
เบเปเปเบกเบต "GX". เบเบตเปเปเบกเปเบเบเบฑเบเบซเบฒเปเบซเบเป.
เบเบตเปเปเบกเปเบเบเบฒเบเบงเบดเบเบต, เปเบเบฑเบเบเบงเบเบเบฑเบเปเบปเบ, เปเบเบทเปเบญเบฎเบฑเบเบกเบทเบเบฑเบเบกเบฑเบ:
# เปเบซเปเปเบเปเปเบเบงเปเบฒ "martian" bytes เบเบตเปเบขเบนเปเปเบเปเบเบฝเบเปเบกเปเบเบเปเปเบขเบนเปเบเบดเบเบเบฑเบ.
$martian =~ s/([AZ][AZ])/ $1 /g;
เบเบดเบก "เบเบปเบ GX!\n" เบเปเบฒ $martian =~ /GX/;
เบซเบผเบทเปเบเบเบเบตเป:
@chars เบเบญเบเบเปเบญเบ = $martian =~ m/([AZ][AZ]|[^AZ])/g;
# เบเปเบฒเบเปเบเบดเบเบเบตเปเปเบกเปเบเปเบเบงเบเบงเบฒเบกเบเบดเบเบเปเบฒเบเบเบทเบเบฑเบเบเบฑเบ: my @chars = $text =~ m/(.)/g;
#
foreach my $char (@chars) {
เบเบดเบก "เบเบปเบ GX!\n", เบชเบธเบเบเปเบฒเบเบเปเบฒ $char eq 'GX';
}
เบซเบผเบทเปเบเบเบเบตเป:
เปเบเบเบฐเบเบฐเบเบตเป ($martian =~ m/\G([AZ][AZ]|.)/gs) {# \G เบญเบฒเบเบเบฐเบเปเปเบเปเบฒเปเบเบฑเบ
เบเปเบฒ ($1 eq 'GX') {
เบเบดเบก "เบเบปเบ GX!\n";
เบชเบธเบเบเปเบฒเบ;
}
}
เบเบตเปเปเบกเปเบเบงเบดเบเบตเบญเบทเปเบ, เปเบเบฑเบเบเบงเบเบซเบเปเบญเบเบฅเบปเบ, เบงเบดเบเบตเบเบฒเบเปเบฎเบฑเบเบเบฒเบ Benjamin Goldberg, เบเบนเปเบเบตเปเปเบเป a
เบขเบทเบเบขเบฑเบเบเบฒเบเปเบเบดเปเบเบเบฒเบเบฅเบปเบเบเปเบฒเบเบฅเบปเบเบเบงเบฒเบกเบเบงเปเบฒเบเบชเบนเบ.
เบเบดเบก "เบเบปเบ GX!\n" เบเปเบฒ $martian =~ m/
(?
(?:[AZ][AZ])*?
GX
/x;
เบญเบฑเบเบเบตเปเบชเบณเปเบฅเบฑเบเบเปเบฒเบเบปเบงเบฅเบฐเบเบญเบ "martian" GX เบขเบนเปเปเบเบชเบฐเบเบฃเบดเบ, เปเบฅเบฐเบเปเปเบเบฑเปเบเบเบฑเปเบ. เบเปเบฒโเปเบเบปเปเบฒ
เบเปเปเบกเบฑเบเปเบเป (?
(?
เบกเบฑเบเบกเบตเบเปเปเบเบปเบเบเปเบญเบเปเบเบเบฒเบเบงเบฒเบเบชเบดเปเบเบเบตเปเบเบดเบเบเบฒเบเปเบ $-[0] เปเบฅเบฐ $+[0], เปเบเปเบเบตเปเบเบปเบเบเบฐเบเบดเปเบฅเปเบง
เบชเบฒเบกเบฒเบเปเบฎเบฑเบเบงเบฝเบเปเบเปเบเบฐเบกเบฒเบ.
เบงเบดเบเบตเบเบฒเบ do I เบเบฒเบเปเบเปเบเบเบฑเบ a เบเบปเบเบเบฐเบเบด เบเบฒเบเบชเบฐเปเบเบเบญเบญเบ เบเบฑเปเบเปเบกเปเบ in a เบเบปเบงเปเบ?
(เบเบฐเบเบญเบเบชเปเบงเบเปเบเบ brian d foy)
เบเบงเบโเปเบฎเบปเบฒโเบเปเปโเบเปเบฒโเปเบเบฑเบโเบเปเบญเบโเปเบเป hard-code เบฎเบนเบโเปเบเบโเปเบเบปเปเบฒโเปเบโเปเบโเบเบปเบงโเบเบฐโเบเบดโเบเบฑเบโเบเบฒเบโเบเบฑเบโเบเบนเป (เบซเบผเบทโเบชเบดเปเบโเบญเบทเปเบเปโเบเบตเปโเปเบฎเบฑเบโเบงเบฝเบโ
เบเปเบงเบเบเบฒเบเบชเบฐเปเบเบเบญเบญเบเปเบเบฑเบเบเบปเบเบเบฐเบเบด). เบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเปเบชเปเบฎเบนเบเปเบเบเปเบเบเบปเบงเปเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเปเบฒเปเบเปเบเปเปเบกเบฒ.
เบเบปเบงเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเบฑเบเบเบนเปเปเบกเปเบเบเปเบฅเบดเบเบปเบเบญเปเบฒเบเบญเบตเบเบเบนเป, เบเบฑเปเบเบเบฑเปเบเบเปเบฒเบเบชเบฒเบกเบฒเบ interpolate เบเบปเบงเปเบเบเบญเบเบเปเบฒเบเปเบเปเบเบฝเบเปเบเป
เบเบทเบเบฑเบเบชเบฐเบเบฃเบดเบเบเบตเปเบญเปเบฒเบเบญเบตเบเบชเบญเบเปเบเบปเปเบฒ. เปเบเบเปเบฅเบฐเบเบตเบเบตเป, เบเปเบฒเบเบญเปเบฒเบเบเบฒเบเบชเบฐเปเบเบเบญเบญเบเบเบปเบเบเบฐเบเบดเปเบเบฑเบเบเบฒเบเบเปเบญเบเบเปเปเบกเบนเบเบเบญเบเบเบนเปเปเบเป
เปเบฅเบฐเปเบเบฑเบเปเบงเปเปเบ $regex. เปเบกเบทเปเบญเบเปเบฒเบเบกเบตเบฎเบนเบเปเบเบเปเบ $regex, เบเปเบฒเบเปเบเปเบเบปเบงเปเบเบเบฑเปเบเปเบ
เบเบฑเบเบเบนเปเบเบฐเบเบดเบเบฑเบเบเบฒเบ.
chomp( $regex เบเบญเบเบเปเบญเบ = );
เบเปเบฒ ($string =~ m/$regex/ ) { ... }
เบเบปเบงเบญเบฑเบเบชเบญเบเบเบดเปเบชเบเบเบตเปเบชเบฐเปเบเบเบญเบญเบเปเบเบฑเบเบเบปเบเบเบฐเบเบดเปเบ $regex เปเบกเปเบเบเบฑเบเบเบดเปเบชเบ, เปเบฅเบฐเบฎเบนเบเปเบเบ
เบเบฑเบเบเปเบญเบเบเบทเบเบเปเบญเบเบซเบผเบท Perl เบเบฐเบเบปเปเบก. เบชเปเบฒเบฅเบฑเบเบเบปเบงเบขเปเบฒเบ, เปเบเบฎเบนเบเปเบเบเบเบตเปเบกเบต
เบงเบปเบเปเบฅเบฑเบเบเบตเปเบเปเปเปเบเปเบเบฑเบเบเบนเป.
$regex เบเบญเบเบเปเบญเบ = "เบเปเปเบเบปเบเบเบฑเบ (paren";
"เบชเบญเบ paren เบเบตเปเบเบฐเบเบนเบเบกเบฑเบเบเบงเบเปเบเบปเบฒเบเบฑเบเบซเบกเบปเบ" =~ m/$regex/;
เปเบกเบทเปเบญ Perl เบฅเบงเบเบฅเบงเบกเบเบฒเบเบชเบฐเปเบเบเบญเบญเบเบเบปเบเบเบฐเบเบด, เบกเบฑเบเบเบฐเบเบดเบเบฑเบเบเปเปเบงเบปเบเปเบฅเบฑเบเปเบเบฑเบเบเบฒเบเปเบฅเบตเปเบกเบเบปเปเบเบเบญเบ a
เบเบงเบฒเบกเบเบณเบเบปเบเบเบฑเบ. เปเบกเบทเปเบญเบกเบฑเบเบเปเปเบเบปเบเบงเบปเบเปเบฅเบฑเบเบเบดเบ, เบกเบฑเบเบเบปเปเบกเบงเปเบฒ:
เบเปเปเบเบปเบเบเบฑเบ (เปเบ regex; เปเบฒเบเปเบเบ <-- เบเบตเปเบเบตเป เปเบ m/Unmatched ( <-- เบเบตเปเบเบตเป paren/ เบขเบนเปเปเบเบงเบชเบฐเบเบฃเบดเบ 3.
เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเปเบฎเบฑเบเบเบฐเบกเบฒเบเบเบตเปเปเบเบซเบผเบฒเบเบงเบดเบเบตเบเบถเปเบเบขเบนเปเบเบฑเบเบชเบฐเบเบฒเบเบฐเบเบฒเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ. เบเปเบฒเบญเบดเบ, เบเปเบฒเบเปเบฒเบเบเปเปเปเบฎเบฑเบ
เบเปเบญเบเบเบฒเบเบเบปเบงเบฅเบฐเบเบญเบเปเบเบเบถเปเบเปเบเบชเบฐเบเบฃเบดเบเปเบเบฑเบเบเบดเปเบชเบ, เปเบเบปเปเบฒเบชเบฒเบกเบฒเบเบซเบฅเบปเบเปเบตเบเบงเบเบกเบฑเบเบเปเบงเบ
"quotemeta" เบเปเบญเบเบเบตเปเบเปเบฒเบเบเบฐเปเบเปเบชเบฐเบเบฃเบดเบ.
chomp( $regex เบเบญเบเบเปเบญเบ = );
$regex = quotemeta($regex );
เบเปเบฒ ($string =~ m/$regex/ ) { ... }
เบเปเบฒเบเบเบฑเบเบชเบฒเบกเบฒเบเปเบฎเบฑเบเบชเบดเปเบเบเบตเปเปเบเบเบเบปเบเปเบเบเบปเบงเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเบฑเบเบเบนเปเปเบเบเปเบเปเบฅเปเบฒเบเบฑเบ "\Q" เปเบฅเบฐ "\E". เปเบเป
"\Q" เบเบญเบ Perl เบเปเบญเบเบเบตเปเบเบฐเปเบฅเบตเปเบกเบเบฒเบเบซเบฅเบปเบเบซเบเบตเบเบปเบงเบญเบฑเบเบเบฐเบฅเบฐเบเบดเปเบชเบ, เปเบฅเบฐ "\E" เบเบญเบเบกเบฑเบเบงเปเบฒเบเบฐเปเบเปเบช.
เบขเบธเบ (เปเบเบดเปเบ perlop เบชเปเบฒเบฅเบฑเบเบฅเบฒเบเบฅเบฐเบญเบฝเบเปเบเบตเปเบกเปเบเบตเบก).
chomp( $regex เบเบญเบเบเปเบญเบ = );
เบเปเบฒ($string =~ m/\Q$regex\E/ ) { ... }
เปเบเบเบฒเบเบเบปเบเบเบฑเบเบเปเบฒเบก, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเป "qr//", เบเบปเบงเบเบฐเบเบดเบเบฑเบเบเบฒเบ quote เบเบปเบเบเบฐเบเบด (เปเบเบดเปเบ perlop เบชเปเบฒเบฅเบฑเบ
เบฅเบฒเบโเบฅเบฐโเบญเบฝเบโเปเบเบตเปเบกโเปเบเบตเบก). เบกเบฑเบเบญเปเบฒเบเบญเบตเบเปเบฅเบฐเบเบฒเบเบเบตเบญเบฒเบเบฅเบงเบเบฅเบงเบกเบฎเบนเบเปเบเบ, เปเบฅเบฐเปเบเบปเปเบฒเบชเบฒเบกเบฒเบเบชเบฐเบซเบกเบฑเบเปเบเปเปเบเบฑเบเบเบปเบเบเบฐเบเบด
เบเบธเบเบชเบฐเปเบเบเบญเบญเบเบเบฑเบเบฎเบนเบเปเบเบ.
chomp(เบเบฒเบเบเปเบญเบเบเปเปเบกเบนเบ $ เบเบญเบเบเปเบญเบ = );
$regex เบเบญเบเบเปเบญเบ = qr/$input/is;
$string =~ m/$regex/ # เบเบทเบเบฑเบเบเบฑเบ m/$input/is;
เบเปเบฒเบเบญเบฒเบเบเบฐเบเปเบญเบเบเบฒเบเปเบชเปเบเบฑเบเบเบฑเบเบเบงเบฒเบกเบเบดเบเบเบฒเบเปเบเปเปเบเบเบเบฒเบเบซเปเป "eval" block เบเบฐเบกเบฒเบเบชเบดเปเบเบเบฑเบเบซเบกเบปเบ.
chomp(เบเบฒเบเบเปเบญเบเบเปเปเบกเบนเบ $ เบเบญเบเบเปเบญเบ = );
เบเบฐเปเบกเบตเบ {
เบเปเบฒ($string =~ m/\Q$input\E/ ) { ... }
};
เปเบเบทเบญเบ $@ เบเปเบฒ $@;
เบซเบฅเบท ...
$regex เบเบญเบเบเปเบญเบ = eval { qr/$input/is };
เบเปเบฒ (เบเปเบฒเบเบปเบ $regex ) {
$string =~ m/$regex/;
}
เบญเบทเปเบ {
เปเบเบทเบญเบ $@;
}
เบเบนเปเบเบฝเบ เปเบฅเบฐ COPYRIGHT
เบฅเบดเบเบฐเบชเบดเบ (c) 1997-2010 Tom Christiansen, Nathan Torkington, เปเบฅเบฐเบเบนเปเบเบฝเบเบญเบทเปเบเปเบเบฒเบกเบเบตเปเบเบฑเบเบเบถเบเปเบงเป.
เบชเบดเบเบเบดเบเบฑเบเบซเบกเบปเบเบชเบฐเบซเบเบงเบ.
เปเบญเบเบฐเบชเบฒเบเบเบตเปเปเบกเปเบเบเปเปเปเบชเบเบเปเบฒ; เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเบเบขเบฒเบเบกเบฑเบเบเบทเบเปเบซเบกเปเปเบฅเบฐ / เบซเบผเบทเบเบฑเบเปเบเบเบกเบฑเบเบเบฒเบเปเบเปเปเบเบทเปเบญเบเปเบเบเบฝเบงเบเบฑเบ
เปเบเบฑเบ Perl เบเบปเบงเบเบญเบเบกเบฑเบเปเบญเบ.
เปเบเบเบเปเปเบเปเบฒเบเบถเบเปเบเบดเบเบเบฒเบเปเบเบเบขเบฒเบเบเบญเบเบกเบฑเบ, เบเบปเบงเบขเปเบฒเบเบฅเบฐเบซเบฑเบเบเบฑเบเบซเบกเบปเบเปเบเปเบเบฅเปเบเบตเปเปเบกเปเบเบเบทเบเบเบฑเบเปเบชเปเปเบเบเบตเป
เปเบเปเบกเบเบชเบฒเบเบฒเบฅเบฐเบเบฐ. เบเปเบฒเบเปเบเปเบฎเบฑเบเบญเบฐเบเบธเบเบฒเบเปเบซเปเปเบฅเบฐเบเบธเบเบเบนเปเปเบซเปเปเบเปเบฅเบฐเบซเบฑเบเบเบตเปเปเบเปเบเบเบเบฒเบเบเบญเบเบเปเบฒเบเปเบญเบ
เปเบเบทเปเบญเบเบงเบฒเบกเบกเปเบงเบเบเบทเปเบ เบซเบผเบทเปเบเบทเปเบญเบเบปเบเบเบณเปเบฅเบเบฒเบกเบเบตเปเปเบเบปเปเบฒเปเบซเบฑเบ. เบเปเบฒเปเบซเบฑเบเบเปเบฒเบเปเปเบเบฅเบฐเบซเบฑเบเปเบซเปเบชเบดเบเปเบเบทเปเบญเบเบฐเปเบเบฑเบ
เบกเบฒเบฅเบฐเบเบฒเบเปเบเปเบเปเปเบเปเบฒเปเบเบฑเบเบเปเบญเบ.
เปเบเป perlfaq6 เบญเบญเบเปเบฅเบเปเปเบเบเปเบเปเบเปเบฅเบดเบเบฒเบ onworks.net