| |||||||||||
| 文字列、パターン・マッチング、スキャナのテキスト処理のための正規表現。 文書処理述語:
正規表現:正規表現は、単純な文字とメタ文字の連続です。 メタ文字ではないではないすべての文字は、それ自身を 表わします。
例:a 文字 "a"を表します。 ab 文字列 "a"を表します。 %% 文字 "%"を表します。
メタキャラクター:| 選言(disjunction) (...) 括弧内に入っている式 . 何でも良いのでひとつの文字 ^ 文字列の最初の位置 $ 文字列の最後の位置 %d 数字 %D 数字ではない文字 %s 空白 %w 単語の一文字(文字あるいは数字あるいは_) %W 単語の一文字ではない。 %< 単語の始まり 例えば、現在の文字は、%wであって、前の文字は%wでない。 %> 単語の終わり 例えば、現在の文字は、%wではなく、前の文字は%wである。
大文字/小文字の区別%i これ以降すべての文字は、大文字/小文字の区別がされる。 %I これ以降すべての文字は、大文字/小文字の区別がされない。
キャラクタのクラス[...] リストされた文字のうちのひとつ [^...] リストされた文字のうちのひとつではない。
グループ化と予見(?:...) 単純なグループ化(悪影響はない) (?=...) 肯定的な予期 true if ... が続くが, ... は尽きない。 (?!...) 否定的な予期 true if ... は続かないが、何も尽きるものはない。 数量子数量子は、接頭辞としてつけられる。 以下の接頭辞が定義されている。
例:
match('(%d+)', 'one123four', L) => L = ['123']
match('(.*)a', barbara, L) => L = [barbar]
match('(.*?)a', barbara, L) => L = [b]
match_all('%<(%w+)', ' one two three ', L)
=> L = [one,two,three]
split('one two three', L) => L = [one,two,three]
chop(' one two ', L) => L = 'one two'
split('%s*:%s*', 'one : two :three', L)
=> L = [one,two,three]
括弧に入れられたユニット括弧に入れられたものは、すべて、項として認識されます。右から左へi番目の 開いた括弧で括弧つけられたものはi番目の項として認識されます。 括弧に入った項は、substitute/4、substitute_all/4の中で, 置き換えられた式において、%1...%9としてあげられます。 match/3 と match_all/3では、対応するシーケンスでこれらは復帰されます。 括弧内の式の値が求められていないならば、例えば、それが、連結のなかで あるために値が求められていないのであれば、結果は、' 'です。
例題:
match_all('((%w+)|(%s+))', 'a few tokens', L).
=> L = [[a,a,''],[' ','',' '],[few,few,''],[' ','',' '],[tokens,tokens,'']]
以下も参照して下さい。正規表現, match/2/3, match_all/3, substitute/4, substitute_all/4, split/2/3, chop/2, get_line/1/2, | |||||||||||
| |||||||||||
| 戻る> |
|