プチコンで遊ぼう! (はてなブログ版)

任天堂3DSのプチコンで遊ぼう! [twitter:@eida_s]

はてなダイアリーから移行しました。 はてなダイアリーのURLを開いても自動的にこちらにリダイレクトされますのでご了承ください。

REGEXLIBの使い方

先日公開した正規表現ライブラリ(REGEXLIB)の使い方。

■使い方
(1)スロット0〜3のいずれかにこのライブラリを置く。
(2)呼び出し側の先頭に「USE 置いたスロット番号」を書く。
(3)「MATCH(パターン, 検索する文字列)」の形で関数MATCHを呼ぶ。
(4)検索する文字列の中にパターンが見つかれば1、見つからなければ0が戻り値として返る。

■簡易リファレンス
[と]の間にある文字のいずれかにマッチする。
例: [abc] ⇒aまたはbまたはcにマッチ

* 直前の文字の0回以上の繰り返しにマッチする。
例: a* ⇒a, aa, aaa, ...などにマッチ (0回以上であることに注意)

+ 直前の文字の1回以上の繰り返しにマッチする。
例: a+ ⇒a, aa, aaa, ...などにマッチ

. 任意の1文字にマッチする。
例: . ⇒a, b, c, ...などにマッチ

() (と)の間をグループとする。 グループの中は | で節として区切ることができ、その節のいずれかでマッチする。
例: (abc|ef) ⇒abcまたはefにマッチ

^ 行頭にマッチする。
例: ^a ⇒文字列の先頭がaではじまる時にマッチ

$ 行末にマッチする。
例: z$ ⇒文字列の終端がzで終わる時にマッチ

\(バックスラッシュ) 特殊文字 *+.()|^$\ をエスケープする。また、\nは改行文字(CHR$(10))を表す。
例: \\ ⇒\にマッチ

■注意点
・| は()の中でのみ使えます。
・[0-9]や[A-Z]のような表現は使えません。文字を列挙してください。
()のネストはできません。ただし、()の中でを入れることはできます。
()が閉じていない時の動作は未定です。
・バックスラッシュは
*+.()|^$nとバックスラッシュが続く時だけ機能します。
・\nはCHR$(10)に置き換えられます。
・特殊文字のエスケープのために、ユニコード非文字(U+FDD0〜U+FDEF)を使います。
・力技による実装なので、大量のメモリを消費します。メモリ不足に注意してください。
・速度は期待しないでください。(^^;)


以上