forked from k-takata/Onigmo
-
Notifications
You must be signed in to change notification settings - Fork 0
/
README.ja
258 lines (182 loc) · 8.93 KB
/
README.ja
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
README.ja 2016/11/30
鬼雲 (鬼車改) -- (C) K.Takata <kentkt AT csc DOT jp>
https://github.com/k-takata/Onigmo
鬼雲は、鬼車から派生した正規表現ライブラリである。
Perl 5.10以降で導入された `\K`, `\R`, `(?(cond)yes|no)` などの新たな
正規表現をサポートすることに注力している。
鬼雲は、Ruby 2.0以降の標準の正規表現ライブラリであるため、多くのパッチが
Ruby 2.xからバックポートされている。
Wikiページも参照のこと。
https://github.com/k-takata/Onigmo/wiki
主な新機能:
正規表現 (文法依存):
\K, \R, \X, (?(cond)yes|no)
(?adlu), \g{name}, \g{n}, (?&name), (?n), (?R), (?0)
(?P<name>...), (?P=name), (?P>name)
API:
onig_search_gpos (Perl互換の \G 用)
エンコーディング:
CP932, CP1250, CP1251, CP1252, CP1253, CP1254, CP1257
文法:
Python
新規ソースファイル:
enc/jis/props.h JIS 文字プロパティーデータ
enc/jis/props.kwd JIS 文字プロパティーデータ
enc/unicode/casefold.h Unicodeケースフォールドデータ
enc/unicode/name2ctype.h Unicodeプロパティデータ
enc/windows_*.c CP*エンコーディング
onigmo.py onigmo.dll/libonigmo.so ローダ
testpy.py テストプログラム
tool/download-ucd.sh Unicode Character Database (UCD)をダウンロード
tool/case-folding.rb UCDからcasefold.hを生成
tool/convert-jis-props.sh props.kwdをprops.hに変換
tool/convert-name2ctype.sh name2ctype.kwdをname2ctypes.hに変換
tool/enc-unicode.rb UCDからname2ctype.kwdを生成
win32/Makefile.mingw Win32用 Makefile (for MinGW)
win32/makedef.py onigmo.defを作成
win32/onigmo.rc onigmo.dll用リソースファイル
ToDo:
* Unicode Character Data のサイズ削減。
* (?|...)
* (?(cond)yes|no) の改善。(先読み・戻り読みの対応)
以下、鬼車の README.ja:
======================================================================
README.ja 2007/05/31
鬼車 ---- (C) K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
http://www.geocities.jp/kosako3/oniguruma/
鬼車は正規表現ライブラリである。
このライブラリの特長は、それぞれの正規表現オブジェクトごとに
文字エンコーディングを指定できることである。
サポートしている文字エンコーディング:
ASCII, UTF-8, UTF-16BE, UTF-16LE, UTF-32BE, UTF-32LE,
EUC-JP, EUC-TW, EUC-KR, EUC-CN,
Shift_JIS, Big5, GB18030, KOI8-R, CP1251,
ISO-8859-1, ISO-8859-2, ISO-8859-3, ISO-8859-4, ISO-8859-5,
ISO-8859-6, ISO-8859-7, ISO-8859-8, ISO-8859-9, ISO-8859-10,
ISO-8859-11, ISO-8859-13, ISO-8859-14, ISO-8859-15, ISO-8859-16
* GB18030: 久保健洋氏提供
* CP1251: Byte氏提供
------------------------------------------------------------
ライセンス
BSDライセンスに従う。
インストール
ケース1: UnixとCygwin環境
1. .autogen.sh (`configure` が存在しなかった場合)
2. ./configure
3. make
4. make install
アンインストール
make uninstall
動作テスト (ASCII/EUC-JP)
make atest
構成確認
onig-config --cflags
onig-config --libs
onig-config --prefix
onig-config --exec-prefix
ケース2: Win32(VC++)環境
1. copy win32\Makefile Makefile
2. copy win32\config.h config.h
3. nmake
onig_s.lib: static link library
onig.dll: dynamic link library
* 動作テスト (ASCII/Shift_JIS)
4. copy win32\testc.c testc.c
5. nmake ctest
正規表現
doc/RE.jaを参照
使用方法
使用するプログラムで、oniguruma.hをインクルードする(Oniguruma APIの場合)。
Oniguruma APIについては、doc/API.jaを参照。
oniguruma.hで定義されている型名UChar(== unsigned char)を無効にしたい場合
には、ONIG_ESCAPE_UCHAR_COLLISIONをdefineしてからoniguruma.hをインクルード
すること。このときにはUCharは定義されず、OnigUCharという名前の定義のみが
有効になる。
oniguruma.hで定義されている型名regex_tを無効にしたい場合には、
ONIG_ESCAPE_REGEX_T_COLLISIONをdefineしてからoniguruma.hをインクルード
すること。このときにはregex_tは定義されず、OnigRegexType, OnigRegexという
名前の定義のみが有効になる。
Unix/Cygwin上でコンパイル、リンクする場合の例:
(prefixが/usr/localのとき)
cc sample.c -L/usr/local/lib -lonig
GNU libtoolを使用しているので、プラットフォームが共有ライブラリをサポートして
いれば、使用できるようになっている。
静的ライブラリと共有ライブラリのどちらを使用するかを指定する方法、実行時点での
環境設定方法については、自分で調べて下さい。
Win32でスタティックリンクライブラリ(onig_s.lib)をリンクする場合には、
コンパイルするときに -DONIG_EXTERN=extern をコンパイル引数に追加すること。
使用例プログラム
sample/simple.c 最小例 (Oniguruma API)
sample/names.c 名前付きグループコールバック使用例
sample/encode.c 幾つかの文字エンコーディング使用例
sample/listcap.c 捕獲履歴機能の使用例
sample/posix.c POSIX API使用例
sample/sql.c 可変メタ文字機能使用例 (SQL-like パターン)
テストプログラム
sample/syntax.c Perl、Java、ASIS文法のテスト
sample/crnl.c --enable-crnl-as-line-terminator テスト
ソースファイル
oniguruma.h 鬼車APIヘッダ (公開)
onig-config.in onig-configプログラム テンプレート
regenc.h 文字エンコーディング枠組みヘッダ
regint.h 内部宣言
regparse.h regparse.cとregcomp.cのための内部宣言
regcomp.c コンパイル、最適化関数
regenc.c 文字エンコーディング枠組み
regerror.c エラーメッセージ関数
regext.c 拡張API関数
regexec.c 検索、照合関数
regparse.c 正規表現パターン解析関数
regsyntax.c 正規表現パターン文法関数、組込み文法定義
regtrav.c 捕獲履歴木巡回関数
regversion.c 版情報関数
st.h ハッシュテーブル関数宣言
st.c ハッシュテーブル関数
oniggnu.h GNU regex APIヘッダ (公開)
reggnu.c GNU regex API関数
onigposix.h POSIX APIヘッダ (公開)
regposerr.c POSIX APIエラーメッセージ関数
regposix.c POSIX API関数
enc/mktable.c 文字タイプテーブル生成プログラム
enc/ascii.c ASCII エンコーディング
enc/euc_jp.c EUC-JP エンコーディング
enc/euc_tw.c EUC-TW エンコーディング
enc/euc_kr.c EUC-KR, EUC-CN エンコーディング
enc/sjis.c Shift_JIS エンコーディング
enc/big5.c Big5 エンコーディング
enc/gb18030.c GB18030 エンコーディング
enc/koi8.c KOI8 エンコーディング
enc/koi8_r.c KOI8-R エンコーディング
enc/cp1251.c CP1251 エンコーディング
enc/iso8859_1.c ISO-8859-1 (Latin-1)
enc/iso8859_2.c ISO-8859-2 (Latin-2)
enc/iso8859_3.c ISO-8859-3 (Latin-3)
enc/iso8859_4.c ISO-8859-4 (Latin-4)
enc/iso8859_5.c ISO-8859-5 (Cyrillic)
enc/iso8859_6.c ISO-8859-6 (Arabic)
enc/iso8859_7.c ISO-8859-7 (Greek)
enc/iso8859_8.c ISO-8859-8 (Hebrew)
enc/iso8859_9.c ISO-8859-9 (Latin-5 または Turkish)
enc/iso8859_10.c ISO-8859-10 (Latin-6 または Nordic)
enc/iso8859_11.c ISO-8859-11 (Thai)
enc/iso8859_13.c ISO-8859-13 (Latin-7 または Baltic Rim)
enc/iso8859_14.c ISO-8859-14 (Latin-8 または Celtic)
enc/iso8859_15.c ISO-8859-15 (Latin-9 または West European with Euro)
enc/iso8859_16.c ISO-8859-16
(Latin-10 または South-Eastern European with Euro)
enc/utf8.c UTF-8 エンコーディング
enc/utf16_be.c UTF-16BE エンコーディング
enc/utf16_le.c UTF-16LE エンコーディング
enc/utf32_be.c UTF-32BE エンコーディング
enc/utf32_le.c UTF-32LE エンコーディング
enc/unicode.c Unicode情報
win32/Makefile Win32用 Makefile (for VC++)
win32/config.h Win32用 config.h
残件
? case fold flag: Katakana <-> Hiragana
? ONIG_OPTION_NOTBOS/NOTEOS追加 (\A, \z, \Z)
?? \X (== \PM\pM*)
?? 文法要素 ONIG_SYN_CONTEXT_INDEP_ANCHORSの実装
?? 検索位置移動停止演算子 (match_at()からONIG_STOPを返す)
and I'm thankful to Akinori MUSHA.
アドレス: K.Kosako <sndgk393 AT ybb DOT ne DOT jp>