
=head1 

ShiftJIS::Regexp - Shift-JISŏꂽK\

=head1 Tv

  use ShiftJIS::Regexp qw(:all);

  match('PQ', '\p{Hiragana}{2}\p{Digit}{2}');
# ͎sƓłB
  match('PQ', '\pH{2}\pD{2}');

  match('', '^+{3}$');

  replace($str, 'A', '`', 'g');

=head1 ڍ

̃W[́AK\Shift-JISŏPerlŗp邽߂
̊֐񋟂܂B

̃W[ɂĐ Shift-JIS ́A
ȉ̐K\Ƀ}b`̂łȂ΂Ȃ܂B

    [\x00-\x7F\xA1-\xDF]|[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC]

āAMacOS JapanesëoCg̈ł̊g
(C<[\x80\xA0\xFD-\xFF]>) ͎舵Ƃł܂B

}`oCgGR[fBOɂ}b`邽߁A
̃W[ł́A}b`O񕶎Eōs邽߂
p^[𐳋K\ɕtĂ܂B
F<perlfaq6>  "How can I match strings with multibyte characters?" QƁB

܂Aq́u}b`vQƂĂB

=head2 ֐

=over 4

=item C<re(PATTERN)>

=item C<re(PATTERN, MODIFIER)>

Shift-JISŏꂽK\PerlŃp[X\Ȃ悤ɕϊĕԂ܂B

C<PATTERN>ɂ́AShift-JISŏꂽK\𕶎Ƃė^܂B

C<MODIFIER>ƂẮAȉ̏Cqiwj𕶎ŗ^܂B

     i  啶^ʂȂ (ASCIIAt@xbg)
     I  啶^ʂȂ (MVALASpe)
     j  ƕЉʂȂipЉ͍l܂j

     s  PsƂĈ
     m  𕡐sƂĈ
     x  obNXbV̌܂͕NX̒ɂȂ󔒕 (܂ [\x20\n\r\t\f])
        𖳎BRg͔F܂B

     o  p[XāiRpCł͂܂!) ʂɃLbV܂B

C<re('^Rs[^[?$')>́AC<'Rs[^['>܂C<'Rs[^'>Ƀ}b`܂B

C<re('^炭$','j')> ́AC<'炭'>, C<'N_'>, C<'N'>, ȂǂɃ}b`܂B

B<C<o>Cq>

     while (<DATA>) {
        print replace($_, '(perl)', '<strong>$1</strong>', 'igo');
     }

     ́ÃR[h悢ł傤

     while (<DATA>) {
        print replace($_, '(perl)', '<strong>$1</strong>', 'ig');
     }

     ȂȂ҂ł͊֐Ă΂邽тɖp^[p[X邩łB

=item C<match(STRING, PATTERN)>

=item C<match(STRING, PATTERN, MODIFIER)>

gݍ݂ C<m//> Zq̂悤ɓ삵܂B
AC<@list = $string =~ m/PATTERN/g> ƈقȂA
LbV̊ʂYꂸɕtĂB
ʂ͎Iɂ͕t܂B

    $string = "";

    @list = match($string, '[]', 'g'); # ߁BʂɃS~!
    @list = match($string,'([])','g'); # ǂB

C<PATTERN>ɂ̓p^[𕶎Ƃė^܂B

C<MODIFIER>ɂ͏Cq𕶎Ƃė^܂B

     i,I,j,s,m,x,o   re()̐B

     g  O[o}b`
     z  p^[󕶎Ƀ}b`̂ł邱Ƃ֐ɒm点B
        (݂܂BgׂǂIɂ͔ʂł܂B)

B<C<z>Cq>

p^[󕶎Ƀ}b`̂łꍇAC<z>CqȂ
ȉ̂悤ɂP񂾂}b`ׂƂQ}b`邱Ƃ܂B
C<z>Cq́Ah܂B

     replace('ACECCG', '(?=C)', '', 'g');  # ACECCG
     replace('ACECCG', '(?=C)', '', 'gz'); # ACECCG

=item C<replace(STRING or SCALAR REF, PATTERN, REPLACEMENT)>

=item C<replace(STRING or SCALAR REF, PATTERN, REPLACEMENT, MODIFIER)>

gݍ݂ C<s///> Zq̂悤ɓ삵܂B

ϐƂăXJ[ւ̃t@XnƁAXJ[ύX
u񐔂Ԃ܂B

ϐƂĕit@Xł͂ȂjnƁA^ꂽXJ[
ύXAu̕Ԃ܂B

    my $str = 'PTROOOO~';
    1 while replace(\$str, '(\pD)(\pD{3})(?!\pD)', '$1C$2');
    print $str; # PCTROCOOO~

C<MODIFIER>ɂ͏Cq𕶎Ƃė^܂B

     i,I,j,s,m,x,o   re()̐B
     g,z             match()̐B

=item C<jsplit(PATTERN or ARRAY REF of [PATTERN, MODIFIER], STRING)>

=item C<jsplit(PATTERN or ARRAY REF of [PATTERN, MODIFIER], STRING, LIMIT)>

gݍ݂ C<split()> Zq̂悤ɓ삵܂B

XJ[ReLXg^{ChReLXgœz C<@_> Ɍʂ邱Ƃ͂܂B
XJ[ReLXgł́AtB[h̐ԂłB

C<PATTERN>ɂ́AShift-JISŏꂽK\𕶎Ƃė^܂B

    jsplit('^', '^^');

C<PATTERN>  C<' '> ^ĂʂȈӖ͂܂B
PɁAgݍ݂ C<CORE::split / /> ƓlɁA̃Xy[Xɂ蕪邾łB

󔒗ޕȉꍇAaԊuiSpXy[Xj󔒗ޕƂ݂Ȃ܂j
ꍇɂ́AC<PATTERN>ɖ`l^邩A
C<splitspace()> ֐gĂB

    jsplit(undef, ' @ This  is @ perl.');
    splitspace(' @ This  is @ perl.');
    # ('This', 'is', 'perl.')

p^[ɏCqꍇ́Az C<[PATTERN, MODIFIER]> 
ɗp邱Ƃł܂B

    jsplit([ '', 'jo' ], '01234ACEGI');

邢́AߍݏCqiqjp邱Ƃł܂B

    jsplit('(?jo)', '01234ACEGI');

C<MODIFIER>ɂ͏Cq𕶎Ƃė^܂B

     i,I,j,s,m,x,o   re()̐B

=item C<splitspace(STRING)>

=item C<splitspace(STRING, LIMIT)>

gݍ݂ C<split(' ', STRING, LIMIT)> ̂悤ɓ삵܂B
󔒗ޕiaԊuiSpXy[Xj܂ށjɂ
 C<STRING> 𕪊Aʂ̃XgԂ܂B
擪̋󔒗ޕ̓tB[h܂B

B<:> C<splitspace(STRING, LIMIT)> 
C<jsplit(undef, STRING, LIMIT)> ƓłB

=item C<splitchar(STRING)>

=item C<splitchar(STRING, LIMIT)>

gݍ݂ C<split(//, STRING, LIMIT)> ̂悤ɓ삵܂B
 C<STRING> 𕶎ƂɕXgԂ܂B

B<:> C<splitchar(STRING, LIMIT)> 
C<jsplit('', STRING, LIMIT)> ƓłB

=back

=head2 {IȐK\

   K\          Ӗ

   ^               ̐擪Ƀ}b`܂B
                    'm' Cqgꍇ́As̐擪Ƀ}b`܂B

   $               񖖔Ảs \n ̑OɃ}b`܂B
                    'm' Cqgꍇ́As̖Ƀ}b`܂B

   .               s \n ȊO̔Cӂ̈ꕶɃ}b`܂B
                    's' Cqgꍇ́A\n܂ޔCӂ̈ꕶɃ}b`܂B

   \A              ̐擪Ƀ}b`܂B
   \Z              񖖔Ảs \n ̑OɃ}b`܂B
   \z              񖖔Ƀ}b`܂B('(?!\n)\Z' Ɠ)

   \C              ̃INebgɃ}b`܂B

   \j              Cӂ̈ꕶɃ}b`܂B
                   ܂肱̃W[Ō [\0-\x{FCFC}] ƓłB

   \J              s \n ȊO̔Cӂ̈ꕶɃ}b`܂B
                   ܂肱̃W[Ō [^\n] ƓłB

     * \j  \J Ƃ́ÃW[ɂgłBႦ΁A

        match($_, '(\j{5})\z') ͖̌ܕi\n ܂ށjԂ܂B
        match($_, '(\J{5})\Z') ͖̌ܕi\n ͏jԂ܂B

=head2 ^

   \a              x       (BEL)
   \b                     (BS) * NX̒ *
   \e              GXP[v (ESC)
   \f                 (FF)
   \n              s       (LF)
   \r              A       (CR)
   \t              ^u   (HT)
   \0              i   (NUL)

   \ooo            oCg𔪐iŎw
   \xhh            oCg\ZiŎw
   \x{hhhh}        oCg\ZiŎw
   \c[             䕶

      Ⴆ \012 \123 \x5c \x5C \x{824F} \x{9Fae} \cA \cZ \c^ \c? ȂǁB

=head2 NX

NX̒ɂ́AeA^A`ςݕNX
邱Ƃł܂B
܂ANXł́A͈̔͂gƂł܂B
͈̔͂̒[_́Ae^Ŏw肵܂B

Shift-JIS ̏:
  C<0x00 .. 0x7F, 0xA1 .. 0xDF, 0x8140 .. 0x9FFC, 0xE040 .. 0xFCFC>.

̃W[͈̔͂WJƂ́AShift-JIS̈OƂȂ
oCgтK؂ɔ΂܂̂ŁAShift-JISɂoCgEoCg
͈͂ӎKv܂B
Ⴆ΁AShift-JISł́AoCgC<0x7F>ƂȂ邱Ƃ͋܂̂ŁA
C<[\x{8340}-\x{8396}]>́AC<[\x{8340}-\x{837E}\x{8380}-\x{8396}]>
ӖɂȂ܂B
܂AC<[\0-\x{fcfc}]> ́AShift-JIS ̔Cӂ̈ꕶɃ}b`܂B
NXł́AShift-JISƂĕsȃoCg܂̓oCg
iႦ C<re('[\xA0-\xFF]')>j̓G[ɂȂAgpł܂B

=head2 NX

o[W 0.13  POSIX ̓NX C<[=x=]> T|[g܂B
Ⴆ΁AC<[[==]]>  C<[@A]> ƁA
C<[[=P=]]>  C<[pPo]> ƁAC<[[=4=]]>  C<[4S]> ƁAꂼꓙłB
́ANX̒ C<[[=c=]]>AC<[[=p=][=e=][=r=][=l=]]> ̂悤ɂ
gƂł܂B

C<[=x=]> ̒ɂ́ACӂ̕e܂̓^ C<\xhh>, C<\x{hhhh}> 
p邱Ƃł܂BNXɑ镶̂Aǂ̕gĂ
܂܂BႦ΁AC<[==]>, C<[=A=]>, C<[=\x{82A0}=]>, C<[=\xB1=]>
Ȃǂ́A݂ɓӖ܂B

C<[[==]]>  C<''>, C<'J'>, C<''>, C<''>, C<'K'>, C<''>,
C<''> Ƀ}b`܂B(C<''> ͓񕶎łAƍvfƂĂ͈łB
AJȉƍvf́A
A\񕶎̔pЉȂ镶܂݂܂B

C<[[===]]> ́ASpƃ}b`܂BC<[[=[=]]> ́A
nߊpʂ܂͑Spnߊpʂƃ}b`܂BC<[[=]=]]> ́A
Ipʂ܂͑SpIpʂƃ}b`܂BC<[[=\=]]> ́A
~L܂͑Sp~Lƃ}b`܂B

=head2 `ςݕNX

   ʏ̌`     ȗ`     POSIX`         ѕ͈̔͂ɂ`

   \d                                          [0-9]
   \D                                          [^0-9]
   \w                                          [0-9A-Z_a-z]
   \W                                          [^0-9A-Z_a-z]
   \s                                          [\t\n\r\f ]
   \S                                          [^\t\n\r\f ]

   \p{Xdigit}     \pX        [[:xdigit:]]      [0-9A-Fa-f]
   \p{Digit}      \pD        [[:digit:]]       [0-9O-X]
   \p{Upper}      \pU        [[:upper:]]       [A-Z`-y]
   \p{Lower}      \pL        [[:lower:]]       [a-z-]
   \p{Alpha}      \pA        [[:alpha:]]       [A-Za-z`-y-]
   \p{Alnum}      \pQ        [[:alnum:]]       [0-9A-Za-zO-X`-y-]

   \p{Word}       \pW        [[:word:]]        [_\p{Digit}\p{European}\p{Kana}\p{Kanji}]
   \p{Punct}      \pP        [[:punct:]]       [!-/:-@[-`{-~-A-IL-Q\---΁---]
   \p{Graph}      \pG        [[:graph:]]       [\p{Word}\p{Punct}]
   \p{Print}      \pT        [[:print:]]       [\x20\x{8140}\p{Graph}]
   \p{Space}      \pS        [[:space:]]       [\x20\x{8140}\x09-\x0D]
   \p{Blank}      \pB        [[:blank:]]       [\x20\x{8140}\t]
   \p{Cntrl}      \pC        [[:cntrl:]]       [\x00-\x1F\x7F]
   \p{ASCII}                 [[:ascii:]]       [\x00-\x7F]

   \p{Roman}      \pR        [[:roman:]]       [\x21-\x7E]
   \p{Hankaku}    \pY        [[:hankaku:]]     [\xA1-\xDF]
   \p{Zenkaku}    \pZ        [[:zenkaku:]]     [\x{8140}-\x{FCFC}]

 ( \p{^Zenkaku}   \p^Z       [[:^zenkaku:]]    [\x00-\x7F\xA1-\xDF] )

   \p{X0201}                 [[:x0201:]]       [\x20-\x7F\xA1-\xDF]
   \p{X0208}                 [[:x0208:]]       [\x{8140}---΁--O-X`-y--@---ք@-`p---r-]
   \p{X0211}                 [[:x0211:]]       [\x00-\x1F]
   \p{JIS}        \pJ        [[:jis:]]         [\p{X0201}\p{X0208}\p{X0211}]

   \p{NEC}        \pN        [[:nec:]]         [\x{8740}-\x{875D}\x{875f}-\x{8775}\x{877E}-\x{879c}\x{ed40}-\x{eeec}\x{eeef}-\x{eefc}]
   \p{IBM}        \pI        [[:ibm:]]         [\x{fa40}-\x{fc4b}]
   \p{Vendor}     \pV        [[:vendor:]]      [\p{NEC}\p{IBM}]
   \p{MSWin}      \pM        [[:mswin:]]       [\p{JIS}\p{Vendor}]

   \p{Halfwidth}             [[:halfwidth:]]   [!#$%&()*+,./0-9:;<=>?@A-Z\[\x5c\]^_`a-z{|}~]
   \p{Fullwidth}  \pF        [[:fullwidth:]]   [Iij{CD^O-XFGH`-ymnOQM-obpP]

   \p{Latin}                 [[:latin:]]       [A-Za-z]
   \p{FullLatin}             [[:fulllatin:]]   [`-y-]
   \p{Greek}                 [[:greek:]]       [--]
   \p{Cyrillic}              [[:cyrillic:]]    [@-`p-]
   \p{European}   \pE        [[:european:]]    [A-Za-z`-y---ք@-`p-]

   \p{HalfKana}              [[:halfkana:]]    [-]
   \p{Hiragana}   \pH        [[:hiragana:]]    [-JKTU]
   \p{Katakana}   \pK        [[:katakana:]]    [@-[RS]
   \p{FullKana}              [[:fullkana:]]    [-@-JK[TURS]
   \p{Kana}                  [[:kana:]]        [-߂-@-JK[TURS]
   \p{Kanji0}     \p0        [[:kanji0:]]      [V-Z]
   \p{Kanji1}     \p1        [[:kanji1:]]      [-r]
   \p{Kanji2}     \p2        [[:kanji2:]]      [-]
   \p{Kanji}                 [[:kanji:]]       [V-Z-r-]
   \p{BoxDrawing}            [[:boxdrawing:]]  [-]

=over 4

=item *

C<\p{Halfwidth}>́Ap (C<">), A|XgtB[ (C<'>), nCt}CiX
(C<->) ASCII}`Ƀ}b`܂BC<\p{Fullwidth}>́AC<\p{Halfwidth}>
ɑΉoCgɃ}b`܂BȂAC<0x5C> (C<\>)
ɑΉC<\p{Fullwidth}>͑̕Sp~L (C<>) łAC<0x7E> (C<~>)
ɑΉC<\p{Fullwidth}>͑̕Sp}N (C<P>) łB

=item *

C<\p{NEC}> ́ANECꕶNECIIBMgɃ}b`܂B
C<\p{IBM}> ́AIBMgɃ}b`܂B
C<\p{Vendor}> ́A}CN\tg (Microsoft) CP932̃x_[`Ƀ}b`܂B܂AC<[\p{NEC}\p{IBM}]> ƓłB
C<\p{MSWin}> ́A}CN\tg (Microsoft) CP932̕Ƀ}b`܂B

=item *

C<\p{Kanji0}> ́AJIS X 4061 ̍ŏNX̕Ƀ}b`܂B
C<\p{Kanji1}> ́AJIS X 0208 ̑ꐅɃ}b`܂B
C<\p{Kanji2}> ́AJIS X 0208 ̑񐅏Ƀ}b`܂B
C<\p{Kanji}> ́AJIS X 4061 ̊{NX̕Ƀ}b`܂B

=item *

C<\p{Prop}>, C<\P{^Prop}>, C<[\p{Prop}]> Ȃǂ݂͌ɓłB
̕ẂAC<\P{Prop}>, C<\p{^Prop}>, C<[\P{Prop}]>, C<[^\p{Prop}]>
Ȃǂŕ\Ƃł܂B

=item *

C<\pP>, C<\P^P>, C<[\pP]> Ȃǂ݂͌ɓłB
̕ẂAC<\PP>, C<\p^P>, C<[\PP]>, C<[^\pP]>
Ȃǂŕ\Ƃł܂B

=item *

C<[[:class:]]>  C<[^[:^class:]]> ƓłB
̕ẂAC<[[:^class:]]> ܂ C<[^[:class:]]> łB

=item *

C<\p{Prop}>, C<\P{Prop}>, C<[:class:]> ̕\ɂāA
C<Prop>  C<class> ̕ł́A啶^̈Ⴂ͖܂B
Ⴆ C<\p{digit}>, C<[:BoxDrawing:]> Ȃǂp邱Ƃł܂B

=item *

C<\p{Prop}>  C<\P{Prop}> ̕\ɂāAړ C<Is>  C<In>
(Ⴆ C<\p{IsProp}>, C<\P{InProp}>, etc.) Cӂɕt邱Ƃł܂B
ړ C<Is>  C<In> ͑啶^̈Ⴂʂ܂̂ŁA
C<\p{isProp}>, C<\p{ISProp}> Ȃǂ͕słB

=back

=head2 NX̗

=over 4

=item 

   JIS X 0208:1997̑E񐅏;    [\x{889F}-\x{9872}\x{989F}-\x{EAA4}]
   JIS X 0213:2004̑O;  [\x{879F}-\x{889E}\x{9873}-\x{989E}\x{EAA5}-\x{EFFC}]
   JIS X 0213:2004̑l;          [\x{F040}-\x{FCF4}]
   JIS X 0213:2004̑ꂩO;  [\x{879F}-\x{EFFC}]
   JIS X 0213:2004̑ꂩl;  [\x{879F}-\x{FCF4}]
   CP-932, NECIIBMg̊;     [\x{ED40}-\x{EEEC}]
   CP-932, IBMg̊;            [\x{FA5C}-\x{FC4B}]

=item JIS X 0213:2004

   Kς;      [\x{8140}-\x{82F9}\x{8340}-\x{84DC}\x{84E5}-\x{84FA}
                   \x{8540}-\x{86F1}\x{86FB}-\x{8776}\x{877E}-\x{878F}
                   \x{8793}\x{8798}\x{8799}\x{879D}-\x{FCF4}]

   󂫗̈;      [\x{82FA}-\x{82FC}\x{84DD}-\x{84E4}\x{84FB}\x{84FC}
   (c47)      \x{86F2}-\x{86FA}\x{8777}-\x{877D}\x{8790}-\x{8792}
                   \x{8794}-\x{8797}\x{879A}-\x{879C}\x{FCF5}-\x{FCFC}]

   Kς݁iʁj; [\x{8140}-\x{82F9}\x{8340}-\x{84DC}\x{84E5}-\x{84FA}
                        \x{8540}-\x{86F1}\x{86FB}-\x{8776}\x{877E}-\x{878F}
                        \x{8793}\x{8798}\x{8799}\x{879D}-\x{EFFC}]

   󂫗̈iʁj; [\x{82FA}-\x{82FC}\x{84DD}-\x{84E4}\x{84FB}\x{84FC}
   (c39)           \x{86F2}-\x{86FA}\x{8777}-\x{877D}\x{8790}-\x{8792}
                        \x{8794}-\x{8797}\x{879A}-\x{879C}]

   2004Nɒǉ;  [\x{879F}\x{889E}\x{9873}\x{989E}\x{EAA5}\x{EFF8}-\x{EFFC}]

=item [U`

   Windows CP-932:   [\x{F040}-\x{F9FC}]
   MacOS Japanese:   [\x{F040}-\x{FCFC}]

=item ەt

   JIS X 0213̊1-50;       [\x{8740}-\x{8753}\x{84BF}-\x{84DC}]
   NECꕶ̊1-20;      [\x{8740}-\x{8753}]
   MacOS Japanese̊1-20;   [\x{8540}-\x{8553}]
   JIS X 0213̓d1-10;   [\x{83D8}-\x{83E1}]
   JIS X 0213̍1-20;     [\x{869F}-\x{86B2}]
   MacOS Japanese̍1-9;  [\x{857C}-\x{8585}]

=item [}

   JIS X 0213̑啶I-XII;         [\x{8754}-\x{875E}\x{8776}]
   NECꕶ̑啶I-X;          [\x{8754}-\x{875D}]
   IBMg̑啶I-X;          [\x{FA4A}-\x{FA53}]
   MacOS Japanesȇ啶I-XV;      [\x{859F}-\x{85AD}]
   JIS X 0213̏i-xii;         [\x{86B3}-\x{86BE}]
   NECIIBMg̏i-x;   [\x{EEEF}-\x{EEF8}]
   IBMg̏i-x;          [\x{FA40}-\x{FA49}]
   MacOS Japanesȅi-xv;      [\x{85B3}-\x{85C1}]

=item ASCII}`ɑΉoCg

   JIS X 0213;      [\x{8149}\x{81AE}\x{8194}\x{8190}\x{8193}\x{8195}\x{81AD}
                     \x{8169}\x{816A}\x{8196}\x{817B}\x{8143}\x{81AF}\x{8144}
                     \x{815E}\x{824F}-\x{8258}\x{8146}\x{8147}\x{8183}\x{8181}
                     \x{8184}\x{8148}\x{8197}\x{8260}-\x{8279}\x{816D}\x{815F}
                     \x{816E}\x{814F}\x{8151}\x{814D}\x{8281}-\x{829A}\x{816F}
                     \x{8162}\x{8170}\x{81B0}]

   Windows CP-932;  [\x{8149}\x{FA57}\x{8194}\x{8190}\x{8193}\x{8195}\x{FA56}
                     \x{8169}\x{816A}\x{8196}\x{817B}\x{8143}\x{817C}\x{8144}
                     \x{815E}\x{824F}-\x{8258}\x{8146}\x{8147}\x{8183}\x{8181}
                     \x{8184}\x{8148}\x{8197}\x{8260}-\x{8279}\x{816D}\x{815F}
                     \x{816E}\x{814F}\x{8151}\x{814D}\x{8281}-\x{829A}\x{816F}
                     \x{8162}\x{8170}\x{8160}]

: ł́AASCIIC<0x5C>ɑΉ镶͋tΐi܂͑SptΐjłA
ASCIIC<0x7C>ɑΉ镶̓`hi܂͑Sp`hjłB


=back

=head2 K\̖ߍ݃R[h (Perl 5.005 ȍ~)

gK\ C<(?{ ... })> ܂ C<(??{ ... })> ́A
oCgɓɒӂ𕥂킸Ƀp[X܂B

ZLeB̗RɂAC<(?{ ... })>  C<(??{ ... })> 
֐ C<match()>  C<replace()> ŎgƂł܂B

́AC<re()> ֐ɂPerlɃp[X\ȐK\ɕϊ̂A
Ȃ̃R[h̃XR[v̒ŐK\RpCĂB
C<use re 'eval';> ̐錾KvɂȂł傤B

  use ShiftJIS::Regexp qw(:all);

  use re 'eval';

  $::res = 0;
  $_ = '|' x 8;

  my $regex = re(q/
       \j*?
       (?{ $cnt = 0 })
       (
         | (?{ local $cnt = $cnt + 1; })
       )*
       |||
       (?{ $::res = $cnt })
     /, 'x');

  /$regex/;
  print $::res; # 5

=head2 ߍݏCq

o[W 0.15 疄ߍݏCqg܂B

ߍݏCq C<(?iIjsmxo)> ́Ap^[̐擪ɂꍇA
܂̓p^[̐擪 C<^>, C<\A>, C<\G> ̂ꂩ
łĖߍݏCq̒ɂꍇɌA
{W[Ǝ̏Cq C<I>, C<j>, C<o> ܂ނƂł܂B

    e.g. (?sm)pattern  ^(?i)pattern  \G(?j)pattern  \A(?ijo)pattern

Perl 5.005 ȑOłAC<match('G', '(?i)g')> ͐UƂȂ܂B
ȂȂ炱 C<match('G', 'g', 'i')> ̂悤ɓłB

: 'G' ̑oCg 'G' łA'g' ̑oCg 'g' łB

=head2 }b`

̃W[́A
uZqɂCq 'e'  C<while>-߂ɂ郋[vT|[gĂ܂B

̋@\𗘗pɂ́Aʏ̍\i܂Agݍ݂̉Zq
C<m//>  C<s///>gpjʂKv܂B

oCgoCg̑oCgɃ}b`A
oCgȆOƌ̓oCgɃ}b`Ƃ
}b`邽߁AK\ C<'\A(\j*?)'> ܂ C<'\G(\j*?)'>
p邱Ƃł܂B

̏ꍇAC<'(\j*?)'>  C<$1> ΉA{̌QƂ́AC<$2>
n߂邱ƂYȂłB

1

    use ShiftJIS::Regexp qw(re);

    $_ = 'ACEGI Vtgihr';
    my $regex = re('\G(?:\j*?)(\pK)');
    # ܂ my $regex = re('\R{padG}(\pK)');

    while (/$regex/go) {
        print "found a katakana: $1\n";
    }

2

    use ShiftJIS::Regexp qw(re);
    use ShiftJIS::String qw(strrev); # Shift-JISł scalar reverse()

    my $regex = re('\G(\j*?)(\w+)');
    # ܂ my $regex = re('(\R{padG})(\w+)');

    foreach ('s/Perl/Camel/g', '(ACEGI)AIUEO-') {
        (my $str = $_) =~ s/$regex/$1.strrev($2)/geo; # $1. t
        print "$str\n";
    }

B<:> ɒŌsꍇA
C<\G(\j*?)> ̑ɓʂȐK\ C<\R{padG}> pقSƎv܂B
ȂȂAC<\R{padG}> ̂ق C<*> wq̌JԂ񐔂傫ȂɂA
JԂ̏ɒBmႭȂ邩łB

=head1 ӎ

̃W[ł͐ Shift-JIS ̕
ȉ̐K\Ƀ}b`Ȃ΂Ȃ܂B

   [\x00-\x7F\xA1-\xDF]|[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC]

O\[X́̕Aꂪ Shift-JIS ł
Ăꍇ C<ShiftJIS::String> W[̊֐
C<issjis()> pĊmFׂłB

Ȃ Shift-JIS gƕςȌʂɂȂ邱Ƃ܂B
iȂ Shift-JIS gꍇAǂȌʂɂȂ邩A
܂Ă܂̂ŁA҂Ă͂܂Bj

Shift-JIS ̓oCg̒ɂ́AoCg C<[\x40-\x7E]>AȂ킿

   @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

ł̂܂B

Perl ̍\͂ł́Â悤ȃoCgɂ
ʂȏ͂Ă܂̂ŁA肪邱Ƃ܂B
Ⴆ΁Ae C<"\"> ͒vIG[N܂B
ȂȂAoCg C<0x5C> NH[gGXP[v邩łB

Õt@Cǂݏoꍇ́A̖͋N܂񂪁A
XNvg Shift-JIS ŏɂ͏\ȒӂKvłB

Shift-JIS̃e邽߂ɂ́A
VONH[g̃qAhNiC<E<lt>E<lt> ''>jA
^ C<\xhh> gق悢ł傤B

Shift-JIS ̑oCgɏoėȂASCII}`iC<[\x21-\x3F]>j
ȉ̒ʂB

   !"#$%&'()*+,-./0123456789:;<=>?

NH[gZq̃f~^ƂẮAgƂ悢܂B

=head1 m̃oO

=over

=item *

^ C<\U>, C<\L>, C<\Q>, C<\E> ѕϐWJ͍lĂ܂B
KvȂAC<""> (or C<qq//>) ZqgĂB

=item *

PꋫE^ C<\b>  C<\B> ͐삵܂B

=item *

Cq C<i>, C<I>  C<j> ́AC<\p{}>, C<\P{}>, POSIX C<[: :]>.
(Ⴆ C<\p{IsLower}>, C<[:lower:]> Ȃ) ɂ͍p܂B
̂߁AC<re('\p{Lower}', 'iI')> ̑
C<re('\p{Alpha}')> gpĂB

=item *

ǂ݌ (Ⴆ C<(?<=[A-Z])>) O̓oCg̑oCg
ă}b`邱Ƃɂ͑ΏĂ܂B
Ⴆ΁A C<match("ACE", '(?<=[A-Z])(\p{Kana})')>  C<('C')>
Ԃ܂AłB

=item *

T߂ȗʎwq܂ރp^[ (Ⴆ C<.??>C<\d*?>) ́A
󕶎ƃ}b`邱Ƃł܂AC<jsplit()> ̃p^[ƂėpꍇA
gݍ݂ C<split()> \z铮ƈقȂ邱Ƃ܂B

=back

=head1 

SADAHIRO Tomoyuki <SADAHIRO@cpan.org> A ms

  Copyright(C) 2001-2010, SADAHIRO Tomoyuki. Japan. All rights reserved.

  This module is free software; you can redistribute it
  and/or modify it under the same terms as Perl itself.

=head1 ֘AW[

=over 4

=item L<ShiftJIS::String>

=item L<ShiftJIS::Collate>

=back

=cut
