File Coverage

blib/lib/ShiftJIS/Regexp/Const.pm
Criterion Covered Total %
statement 12 12 100.0
branch n/a
condition n/a
subroutine 4 4 100.0
pod n/a
total 16 16 100.0


line stmt bran cond sub pod time code
1             package ShiftJIS::Regexp::Const;
2 6     6   32 use strict;
  6         46  
  6         201  
3 6     6   29 use Carp;
  6         12  
  6         433  
4              
5 6     6   35 use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
  6         10  
  6         457  
6 6     6   48 use vars qw(%AbbrevProp %Re %Err $Char $Trail $PadA $PadG $PadGA);
  6         27  
  6         9260  
7              
8             $VERSION = '1.03';
9              
10             require Exporter;
11             @ISA = qw(Exporter);
12             @EXPORT = qw();
13             @EXPORT_OK = qw(%AbbrevProp %Re %Err $Char $Trail $PadA $PadG $PadGA);
14              
15             my $PACKAGE = 'ShiftJIS::Regexp';
16              
17             my $Open = 5.005 > $] ? '(?:' : '(?-i:';
18             my $Close = ')';
19              
20             my $SBC = '[\x00-\x7F\xA1-\xDF]';
21             my $DBC = '[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC]';
22              
23             $Char = "(?:$SBC|$DBC)";
24             $Trail = '[\x40-\x7E\x80-\xFC]';
25              
26             $PadA = '(?:\A|[\x00-\x80\xA0-\xDF])(?:[\x81-\x9F\xE0-\xFC]{2})*?';
27              
28             $PadG = '\G(?:|[\x00-\xFF]*?'.
29             '[\x00-\x80\xA0-\xDF])(?:[\x81-\x9F\xE0-\xFC]{2})*?';
30             #$PadG = '(?:\G|[\x00-\x80\xA0-\xDF])(?:[\x81-\x9F\xE0-\xFC]{2})*?';
31              
32             #$PadGA = '(?:\G\A|\G(?:[\x81-\x9F\xE0-\xFC]{2})+?|'.
33             # '[\x00-\x80\xA0-\xDF](?:[\x81-\x9F\xE0-\xFC]{2})*?)';
34             $PadGA = '\G(?:\A|(?:[\x81-\x9F\xE0-\xFC]{2})+?|[\x00-\xFF]*?'.
35             '[\x00-\x80\xA0-\xDF](?:[\x81-\x9F\xE0-\xFC]{2})*?)';
36              
37             %Err = (
38             'Code' => $PACKAGE.' Sequence (?{...}) not terminated or not {}-balanced',
39             'Undef' => $PACKAGE.' "%s" is not defined',
40             'notTermin' => $PACKAGE.' %s is not terminated ("%s" missing)',
41             'notASCII' => $PACKAGE.' "%s" is not followed by an ASCII, [\x21-\x7e]',
42             'notAlnum' => $PACKAGE.' "%s" is not followed by an Alnum, [0-9A-Za-z]',
43             'notBrace' => $PACKAGE.' "%s" is not followed by a brace',
44             'backtips' => $PACKAGE.' Trailing \ in regexp',
45             'oddTrail' => $PACKAGE.' "\\x%02x" is not followed by trail byte',
46             'revRange' => $PACKAGE.' Invalid [] range (reverse) %d > %d',
47             'invalRng' => $PACKAGE.' Invalid [] range "%s"',
48             'invalMch' => $PACKAGE.' Invalid Metacharacter "%s"',
49             'invalHex' => $PACKAGE.' Invalid Hexadecimal %s following "\x"',
50             'invalFlw' => $PACKAGE.' Invalid byte "\\x%02x" following "%s" (only "%s" allowed)',
51             );
52              
53             %Re = (
54             '\R{pada}' => $PadA,
55             '\R{padg}' => $PadG,
56             '\R{padga}' => $PadGA,
57              
58             '\C' => '[\x00-\xFF]',
59             '\j' => $Char,
60             '\J' => "(?:(?!\\n)$Char)",
61             '\d' => '[0-9]',
62             '\D' => '(?:[\x00-\x2F\x3A-\x7F\xA1-\xDF]|' . $DBC . ')',
63             '\w' => '[0-9A-Za-z\x5F]',
64             '\W' => '(?:[\x00-\x2F\x3A-\x40\x5B-\x5E\x60\x7B-\x7F\xA1-\xDF]|'.$DBC.')',
65             '\s' => '[\x09\x0A\x0C\x0D\x20]',
66             '\S' => '(?:[\x00-\x08\x0B\x0E-\x1F\x21-\x7F\xA1-\xDF]|' . $DBC . ')',
67              
68             '\p{xdigit}' => '[0-9A-Fa-f]',
69             '\P{xdigit}' => $Open.'[\x00-\x2F\x3A-\x40\x47-\x60\x67-\x7F\xA1-\xDF]|'
70             . $DBC .$Close,
71              
72             '\p{digit}' => $Open.'[\x30-\x39]|\x82[\x4F-\x58]'.$Close,
73             '\P{digit}' => $Open.'[\x00-\x2F\x3A-\x7F\xA1-\xDF]'
74             . '|[\x81\x83-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC]'
75             . '|\x82[\x40-\x4E\x59-\x7E\x80-\xFC]'
76             . $Close,
77              
78             '\p{upper}' => $Open.'[\x41-\x5A]|\x82[\x60-\x79]'.$Close,
79             '\P{upper}' => $Open.'[\x00-\x40\x5B-\x7F\xA1-\xDF]'
80             . '|[\x81\x83-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC]'
81             . '|\x82[\x40-\x5F\x7A-\x7E\x80-\xFC]'
82             . $Close,
83              
84             '\p{lower}' => $Open.'[\x61-\x7A]|\x82[\x81-\x9A]'.$Close,
85             '\P{lower}' => $Open.'[\x00-\x60\x7B-\x7F\xA1-\xDF]'
86             . '|[\x81\x83-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC]'
87             . '|\x82[\x40-\x7E\x80\x9B-\xFC]'. $Close,
88              
89             '\p{alpha}' => $Open.'[\x41-\x5A\x61-\x7A]|\x82[\x60-\x79\x81-\x9A]'.$Close,
90             '\P{alpha}' => $Open.'[\x00-\x40\x5B-\x60\x7B-\x7F\xA1-\xDF]'
91             . '|[\x81\x83-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC]'
92             . '|\x82[\x40-\x5F\x7A-\x7E\x80\x9B-\xFC]'. $Close,
93              
94             '\p{alnum}' => $Open.'[0-9A-Za-z]|\x82[\x4F-\x58\x60-\x79\x81-\x9A]'.$Close,
95             '\P{alnum}' => $Open.'[\x00-\x2F\x3A-\x40\x5B-\x60\x7B-\x7F\xA1-\xDF]'
96             . '|[\x81\x83-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC]'
97             . '|\x82[\x40-\x4E\x59-\x5F\x7A-\x7E\x80\x9B-\xFC]'. $Close,
98              
99             '\p{blank}' => $Open.'[\x09\x20]|\x81\x40'.$Close,
100             '\P{blank}' => $Open.'[\x00-\x08\x0A-\x1F\x21-\x7F\xA1-\xDF]'
101             . '|\x81[\x41-\x7E\x80-\xFC]'
102             . '|[\x82-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC]'. $Close,
103              
104             '\p{space}' => $Open.'[\x09-\x0D\x20]|\x81\x40'.$Close,
105             '\P{space}' => $Open.'[\x00-\x08\x0E-\x1F\x21-\x7F\xA1-\xDF]'
106             . '|\x81[\x41-\x7E\x80-\xFC]'
107             . '|[\x82-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC]'. $Close,
108              
109             '\p{punct}' => $Open.'[\x21-\x2F\x3A-\x40\x5B-\x60\x7B-\x7E\xA1-\xA5]'
110             . '|\x81[\x41-\x49\x4C-\x51\x5C-\x7E\x80-\xAC\xB8-\xBF'
111             . '\xC8-\xCE\xDA-\xE8\xF0-\xF7\xFC]|\x84[\x9F-\xBE]'. $Close,
112             '\P{punct}' => $Open.'[\x00-\x20\x30-\x39\x41-\x5A\x61-\x7A\x7F\xA6-\xDF]'
113             . '|\x81[\x40\x4A\x4B\x52-\x5B\xAD-\xB7\xC0-\xC7\xCF-\xD9'
114             . '\xE9-\xEF\xF8-\xFB]|\x84[\x40-\x7E\x80-\x9E\xBF-\xFC]'
115             . '|[\x82\x83\x85-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC]'. $Close,
116              
117             '\p{graph}' => $Open.'[\x21-\x7E\xA1-\xDF]|\x81[\x41-\x7E'
118             . '\x80-\xAC\xB8-\xBF\xC8-\xCE\xDA-\xE8\xF0-\xF7\xFC]|'
119             . '\x82[\x4F-\x58\x60-\x79\x81-\x9A\x9F-\xF1]|'
120             . '\x83[\x40-\x7E\x80-\x96\x9F-\xB6\xBF-\xD6]|'
121             . '\x84[\x40-\x60\x70-\x7E\x80-\x91\x9F-\xBE]|'
122             . '\x88[\x9F-\xFC]|\x98[\x40-\x72\x9F-\xFC]|'
123             . '[\x89-\x97\x99-\x9F\xE0-\xE9][\x40-\x7E\x80-\xFC]|'
124             . '\xEA[\x40-\x7E\x80-\xA4]'
125             . $Close,
126              
127             '\P{graph}' => $Open.'[\x00-\x20\x7F]|'
128             . '\x81[\x40\xAD-\xB7\xC0-\xC7\xCF-\xD9\xE9-\xEF\xF8-\xFB]|'
129             . '\x82[\x40-\x4E\x59-\x5F\x7A-\x7E\x80\x9B-\x9E\xF2-\xFC]|'
130             . '\x83[\x97-\x9E\xB7-\xBE\xD7-\xFC]|'
131             . '\x84[\x61-\x6F\x92-\x9E\xBF-\xFC]|'
132             . '[\x85-\x87\xEB-\xFC][\x40-\x7E\x80-\xFC]|'
133             . '\x88[\x40-\x7E\x80-\x9E]|\x98[\x73-\x7E\x80-\x9E]|'
134             . '\xEA[\xA5-\xFC]'
135             .$Close,
136              
137             '\p{print}' => $Open.'[\x20-\x7E\xA1-\xDF]|\x81[\x40-\x7E'
138             . '\x80-\xAC\xB8-\xBF\xC8-\xCE\xDA-\xE8\xF0-\xF7\xFC]|'
139             . '\x82[\x4F-\x58\x60-\x79\x81-\x9A\x9F-\xF1]|'
140             . '\x83[\x40-\x7E\x80-\x96\x9F-\xB6\xBF-\xD6]|'
141             . '\x84[\x40-\x60\x70-\x7E\x80-\x91\x9F-\xBE]|'
142             . '\x88[\x9F-\xFC]|\x98[\x40-\x72\x9F-\xFC]|'
143             . '[\x89-\x97\x99-\x9F\xE0-\xE9][\x40-\x7E\x80-\xFC]|'
144             . '\xEA[\x40-\x7E\x80-\xA4]'
145             . $Close,
146              
147             '\P{print}' => $Open.'[\x00-\x1F\x7F]|'
148             . '\x81[\xAD-\xB7\xC0-\xC7\xCF-\xD9\xE9-\xEF\xF8-\xFB]|'
149             . '\x82[\x40-\x4E\x59-\x5F\x7A-\x7E\x80\x9B-\x9E\xF2-\xFC]|'
150             . '\x83[\x97-\x9E\xB7-\xBE\xD7-\xFC]|'
151             . '\x84[\x61-\x6F\x92-\x9E\xBF-\xFC]|'
152             . '[\x85-\x87\xEB-\xFC][\x40-\x7E\x80-\xFC]|'
153             . '\x88[\x40-\x7E\x80-\x9E]|\x98[\x73-\x7E\x80-\x9E]|'
154             . '\xEA[\xA5-\xFC]'
155             . $Close,
156              
157             '\p{cntrl}' => $Open.'[\x00-\x1F\x7F]'.$Close,
158             '\P{cntrl}' => $Open.'[\x20-\x7E\xA1-\xDF]|'.$DBC.$Close,
159              
160             '\p{ascii}' => $Open.'[\x00-\x7F]'.$Close,
161             '\P{ascii}' => $Open.'[\xA1-\xDF]|'.$DBC.$Close,
162              
163             '\p{roman}' => $Open.'[\x21-\x7E]'.$Close,
164             '\P{roman}' => $Open.'[\x00-\x20\x7F\xA1-\xDF]|'.$DBC.$Close,
165              
166             '\p{word}' => $Open
167             . '[0-9A-Za-z\x5F\xA6-\xDF]|\x81[\x4A\x4B\x52-\x5B]|'
168             . '\x82[\x4F-\x58\x60-\x79\x81-\x9A\x9F-\xF1]|'
169             . '\x83[\x40-\x7E\x80-\x96\x9F-\xB6\xBF-\xD6]|'
170             . '\x84[\x40-\x60\x70-\x7E\x80-\x91]|\x88[\x9F-\xFC]|'
171             . '[\x89-\x97\x99-\x9F\xE0-\xE9][\x40-\x7E\x80-\xFC]|'
172             . '\x98[\x40-\x72\x9F-\xFC]|\xEA[\x40-\x7E\x80-\xA4]'
173             . $Close,
174              
175             '\P{word}' => $Open
176             . '[\x00-\x2F\x3A-\x40\x5B-\x5E\x60\x7B-\x7F\xA1-\xA5]|'
177             . '\x81[\x40-\x49\x4C-\x51\x5C-\x7E\x80-\xFC]|'
178             . '\x82[\x40-\x4E\x59-\x5F\x7A-\x7E\x80\x9B-\x9E\xF2-\xFC]|'
179             . '\x83[\x97-\x9E\xB7-\xBE\xD7-\xFC]|'
180             . '\x84[\x61-\x6F\x92-\xFC]|'
181             . '[\x85-\x87\xEB-\xFC][\x40-\x7E\x80-\xFC]|'
182             . '\x88[\x40-\x7E\x80-\x9E]|\x98[\x73-\x7E\x80-\x9E]|'
183             . '\xEA[\xA5-\xFC]'.$Close,
184              
185             '\p{halfwidth}' => '[\x21\x23-\x26\x28-\x2C\x2E-\x7E]',
186             '\P{halfwidth}' => $Open.'[\x00-\x20\x22\x27\x2D\x7F\xA1-\xDF]|'
187             . $DBC.$Close,
188              
189             '\p{fullwidth}' => $Open.'\x81[\x43\x44\x46-\x49\x4d\x4f\x50\x51\x5e'
190             . '\x62\x69\x6a\x6d-\x70\x7b\x81\x83\x84\x8f\x90\x93-\x97]|'
191             . '\x82[\x4f-\x58\x60-\x79\x81-\x9a]'.$Close,
192              
193             '\P{fullwidth}' => $Open.$SBC
194             . '|\x81[\x40-\x42\x45\x4a-\x4c\x4e\x52-\x5d\x5f-\x61'
195             . '\x63-\x68\x6b\x6c\x71-\x7a\x7c-\x7e\x80\x82\x85-\x8e'
196             . '\x91\x92\x98-\xfc]'
197             . '|\x82[\x40-\x4e\x59-\x5f\x7a-\x7e\x80\x9b-\xfc]'
198             . '|[\x83-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC]'. $Close,
199              
200             '\p{hankaku}' => $Open.'[\xA1-\xDF]'.$Close,
201             '\P{hankaku}' => $Open.'[\x00-\x7F]|'.$DBC.$Close,
202             '\p{zenkaku}' => "$Open$DBC$Close",
203             '\P{zenkaku}' => "$Open$SBC$Close",
204              
205             '\p{x0201}' => $Open.'[\x20-\x7F\xA1-\xDF]'.$Close,
206             '\P{x0201}' => $Open.'[\x00-\x1F]|'.$DBC.$Close,
207              
208             '\p{x0211}' => $Open.'[\x00-\x1F]'.$Close,
209             '\P{x0211}' => $Open.'[\x20-\x7F\xA1-\xDF]|'.$DBC.$Close,
210              
211             '\p{x0208}' => $Open.'\x81[\x40-\x7E'
212             . '\x80-\xAC\xB8-\xBF\xC8-\xCE\xDA-\xE8\xF0-\xF7\xFC]|'
213             . '\x82[\x4F-\x58\x60-\x79\x81-\x9A\x9F-\xF1]|'
214             . '\x83[\x40-\x7E\x80-\x96\x9F-\xB6\xBF-\xD6]|'
215             . '\x84[\x40-\x60\x70-\x7E\x80-\x91\x9F-\xBE]|'
216             . '\x88[\x9F-\xFC]|\x98[\x40-\x72\x9F-\xFC]|'
217             . '[\x89-\x97\x99-\x9F\xE0-\xE9][\x40-\x7E\x80-\xFC]|'
218             . '\xEA[\x40-\x7E\x80-\xA4]'
219             .$Close,
220              
221             '\P{x0208}' => $Open.$SBC
222             . '|\x81[\xAD-\xB7\xC0-\xC7\xCF-\xD9\xE9-\xEF\xF8-\xFB]'
223             . '|\x82[\x40-\x4E\x59-\x5F\x7A-\x7E\x80\x9B-\x9E\xF2-\xFC]'
224             . '|\x83[\x97-\x9E\xB7-\xBE\xD7-\xFC]'
225             . '|\x84[\x61-\x6F\x92-\x9E\xBF-\xFC]'
226             . '|[\x85-\x87\xEB-\xFC][\x40-\x7E\x80-\xFC]'
227             . '|\x88[\x40-\x7E\x80-\x9E]|\x98[\x73-\x7E\x80-\x9E]'
228             . '|\xEA[\xA5-\xFC]'.$Close,
229              
230             '\p{jis}' => $Open.$SBC.'|\x81[\x40-\x7E'
231             . '\x80-\xAC\xB8-\xBF\xC8-\xCE\xDA-\xE8\xF0-\xF7\xFC]|'
232             . '\x82[\x4F-\x58\x60-\x79\x81-\x9A\x9F-\xF1]|'
233             . '\x83[\x40-\x7E\x80-\x96\x9F-\xB6\xBF-\xD6]|'
234             . '\x84[\x40-\x60\x70-\x7E\x80-\x91\x9F-\xBE]|'
235             . '\x88[\x9F-\xFC]|\x98[\x40-\x72\x9F-\xFC]|'
236             . '[\x89-\x97\x99-\x9F\xE0-\xE9][\x40-\x7E\x80-\xFC]|'
237             . '\xEA[\x40-\x7E\x80-\xA4]'. $Close,
238              
239             '\P{jis}' => $Open
240             . '\x81[\xAD-\xB7\xC0-\xC7\xCF-\xD9\xE9-\xEF\xF8-\xFB]|'
241             . '\x82[\x40-\x4E\x59-\x5F\x7A-\x7E\x80\x9B-\x9E\xF2-\xFC]|'
242             . '\x83[\x97-\x9E\xB7-\xBE\xD7-\xFC]|'
243             . '\x84[\x61-\x6F\x92-\x9E\xBF-\xFC]|'
244             . '[\x85-\x87\xEB-\xFC][\x40-\x7E\x80-\xFC]|'
245             . '\x88[\x40-\x7E\x80-\x9E]|\x98[\x73-\x7E\x80-\x9E]|'
246             . '\xEA[\xA5-\xFC]'
247             .$Close,
248              
249             '\p{latin}' => $Open.'[\x41-\x5A\x61-\x7A]'.$Close,
250             '\P{latin}' => $Open.'[\x00-\x40\x5B-\x60\x7B-\x7F\xA1-\xDF]|'.$DBC.$Close,
251              
252             '\p{fulllatin}' => $Open.'\x82[\x60-\x79\x81-\x9A]'.$Close,
253             '\P{fulllatin}' => $Open.$SBC.'|\x82[\x40-\x5F\x7A-\x7E\x80\x9B-\xFC]|'
254             . '[\x81\x83-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC]'. $Close,
255              
256             '\p{greek}' => $Open.'\x83[\x9f-\xb6\xbf-\xd6]'.$Close,
257             '\P{greek}' => $Open.$SBC.'|\x83[\x40-\x7E\x80-\x9e\xb7-\xbe\xd7-\xFC]|'
258             . '[\x81\x82\x84-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC]'. $Close,
259              
260             '\p{cyrillic}' => $Open.'\x84[\x40-\x60\x70-\x7E\x80-\x91]'.$Close,
261             '\P{cyrillic}' => $Open.$SBC.'|\x84[\x61-\x6f\x92-\xFC]|'
262             . '[\x81-\x83\x85-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC]'. $Close,
263              
264             '\p{european}' => $Open.'[\x41-\x5A\x61-\x7A]|\x82[\x60-\x79\x81-\x9A]|'
265             . '\x83[\x9f-\xb6\xbf-\xd6]|\x84[\x40-\x60\x70-\x7E\x80-\x91]'
266             . $Close,
267              
268             '\P{european}' => $Open.'[\x00-\x40\x5B-\x60\x7B-\x7F\xA1-\xDF]|'
269             . '[\x81\x85-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC]|'
270             . '\x82[\x40-\x5F\x7A-\x7E\x80\x9B-\xFC]|'
271             . '\x83[\x40-\x7E\x80-\x9e\xb7-\xbe\xd7-\xFC]|'
272             . '\x84[\x61-\x6f\x92-\xFC]'. $Close,
273              
274             '\p{halfkana}' => $Open.'[\xA6-\xDF]'.$Close,
275             '\P{halfkana}' => $Open.'[\x00-\x7F\xA1-\xA5]|' .$DBC.$Close,
276              
277             '\p{hiragana}' => $Open.'\x82[\x9F-\xF1]|\x81[\x4A\x4B\x54\x55]'.$Close,
278             '\P{hiragana}' => $Open.$SBC.'|[\x83-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC]'
279             . '|\x82[\x40-\x7E\x80-\x9E\xF2-\xFC]'
280             . '|\x81[\x40-\x49\x4C-\x53\x56-\x7E\x80-\xFC]'. $Close,
281              
282             '\p{katakana}' => $Open.'\x83[\x40-\x7E\x80-\x96]|\x81[\x52\x53\x5B]'.$Close,
283             '\P{katakana}' => $Open.$SBC
284             . '|[\x82\x84-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC]'
285             . '|\x83[\x97-\xFC]|\x81[\x40-\x51\x54-\x5A\x5C-\x7E\x80-\xFC]'
286             . $Close,
287              
288             '\p{fullkana}' => $Open.'\x82[\x9F-\xF1]|\x83[\x40-\x7E\x80-\x96]|'
289             . '\x81[\x4A\x4B\x5B\x52-\x55]'.$Close,
290             '\P{fullkana}' => $Open.$SBC.'|[\x84-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC]'
291             . '|\x82[\x40-\x7E\x80-\x9E\xF2-\xFC]|\x83[\x97-\xFC]'
292             . '|\x81[\x40-\x49\x4C-\x51\x56-\x5A\x5C-\x7E\x80-\xFC]'
293             . $Close,
294              
295             '\p{kana}' => $Open.'[\xA6-\xDF]|\x82[\x9F-\xF1]|\x83[\x40-\x7E\x80-\x96]|'
296             . '\x81[\x4A\x4B\x5B\x52-\x55]'.$Close,
297             '\P{kana}' => $Open.'[\x00-\x7F\xA1-\xA5]|'
298             . '[\x84-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC]|'
299             . '\x82[\x40-\x7E\x80-\x9E\xF2-\xFC]|\x83[\x97-\xFC]|'
300             . '\x81[\x40-\x49\x4C-\x51\x56-\x5A\x5C-\x7E\x80-\xFC]'
301             . $Close,
302              
303             '\p{kanji0}' => $Open.'\x81[\x56-\x5A]'.$Close,
304             '\P{kanji0}' => $Open.$SBC.'|\x81[\x40-\x55\x5b-\x7E\x80-\xFC]'
305             . '|[\x82-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC]'. $Close,
306              
307             '\p{kanji1}' => $Open.'\x88[\x9F-\xFC]|\x98[\x40-\x72]|'
308             . '[\x89-\x97][\x40-\x7E\x80-\xFC]'.$Close,
309             '\P{kanji1}' => $Open.$SBC.'|\x88[\x40-\x7E\x80-\x9E]|'
310             . '\x98[\x73-\x7E\x80-\xFC]|'
311             . '[\x81-\x87\x99-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC]'
312             . $Close,
313              
314             '\p{kanji2}' => $Open.'\x98[\x9F-\xFC]|[\x99-\x9F\xE0-\xE9]'
315             . '[\x40-\x7E\x80-\xFC]|\xEA[\x40-\x7E\x80-\xA4]'
316             . $Close,
317             '\P{kanji2}' => $Open.$SBC.'|\x98[\x40-\x7E\x80-\x9E]|'
318             . '[\x81-\x97\xEB-\xFC][\x40-\x7E\x80-\xFC]|\xEA[\xA5-\xFC]'
319             . $Close,
320              
321             '\p{kanji}' => $Open.'\x81[\x56-\x5A]|\x88[\x9F-\xFC]'
322             . '|[\x89-\x97\x99-\x9F\xE0-\xE9][\x40-\x7E\x80-\xFC]'
323             . '|\x98[\x40-\x72\x9F-\xFC]|\xEA[\x40-\x7E\x80-\xA4]'
324             . $Close,
325             '\P{kanji}' => $Open.$SBC
326             . '|\x81[\x40-\x55\x5b-\x7E\x80-\xFC]'
327             . '|\x88[\x40-\x7E\x80-\x9E]|\x98[\x73-\x7E\x80-\x9E]'
328             . '|[\x82-\x87\xEB-\xFC][\x40-\x7E\x80-\xFC]'
329             . '|\xEA[\xA5-\xFC]'. $Close,
330              
331             '\p{boxdrawing}' => $Open.'\x84[\x9F-\xBE]'.$Close,
332             '\P{boxdrawing}' => $Open.$SBC
333             . '|[\x81-\x83\x85-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC]'
334             . '|\x84[\x40-\x7E\x80-\x9E\xBF-\xFC]'. $Close,
335              
336             '\p{nec}' => $Open. '\x87[\x40-\x5d\x5f-\x75\x7e\x80-\x9c]'
337             . '|\xed[\x40-\x7e\x80-\xfc]|\xee[\x40-\x7e\x80-\xec\xef-\xfc]'
338             . $Close,
339              
340             '\p{ibm}' => $Open.'[\xfa-\xfb][\x40-\x7e\x80-\xfc]|\xfc[\x40-\x4b]'.$Close,
341              
342             '\p{vendor}' => $Open. '\x87[\x40-\x5d\x5f-\x75\x7e\x80-\x9c]'
343             . '|[\xed\xfa-\xfb][\x40-\x7e\x80-\xfc]'
344             . '|\xee[\x40-\x7e\x80-\xec\xef-\xfc]|\xfc[\x40-\x4b]'
345             . $Close,
346              
347             '\p{mswin}' => $Open.'[\x00-\x7f\xa1-\xdf]|'
348             . '\x81[\x40-\x7e\x80-\xac\xb8-\xbf\xc8-\xce\xda-\xe8\xf0-\xf7\xfc]|'
349             . '\x82[\x4f-\x58\x60-\x79\x81-\x9a\x9f-\xf1]|'
350             . '\x83[\x40-\x7e\x80-\x96\x9f-\xb6\xbf-\xd6]|'
351             . '\x84[\x40-\x60\x70-\x7e\x80-\x91\x9f-\xbe]|'
352             . '\x88[\x9f-\xfc]|\x98[\x40-\x72\x9f-\xfc]|\xea[\x40-\x7e\x80-\xa4]|'
353             . '[\x89-\x97\x99-\x9f\xe0-\xe9][\x40-\x7e\x80-\xfc]|'
354             . '\x87[\x40-\x5d\x5f-\x75\x7e\x80-\x9c]|'
355             . '\xed[\x40-\x7e\x80-\xfc]|\xee[\x40-\x7e\x80-\xec\xef-\xfc]|'
356             . '[\xfa\xfb][\x40-\x7e\x80-\xfc]|\xfc[\x40-\x4b]'
357             . $Close,
358             );
359              
360             for (qw/ nec ibm mswin vendor /) {
361             $Re{"\\P{$_}"} = $Open.'(?!'. $Re{ "\\p{$_}" } .')'. $Char.$Close;
362             }
363              
364             %AbbrevProp = qw(
365             X xdigit
366             D digit
367             U upper
368             L lower
369             A alpha
370             Q alnum
371             W word
372             P punct
373             G graph
374             T print
375             S space
376             B blank
377             C cntrl
378             R roman
379             Y hankaku
380             Z zenkaku
381             F fullwidth
382             J jis
383             N nec
384             I ibm
385             V vendor
386             M mswin
387             E european
388             H hiragana
389             K katakana
390             0 kanji0
391             1 kanji1
392             2 kanji2
393             );
394              
395             1;
396             __END__