文字列、パターン・マッチング、スキャナのテキスト処理のための正規表現。 文書処理述語:
正規表現は、単純な文字とメタ文字の連続です。 メタ文字ではないではないすべての文字は、それ自身を 表わします。
a 文字 "a"を表します。 ab 文字列 "a"を表します。 %% 文字 "%"を表します。
| 選言(disjunction) (...) 括弧内に入っている式 . 何でも良いのでひとつの文字 ^ 文字列の最初の位置 $ 文字列の最後の位置 %d 数字 %D 数字ではない文字 %s 空白 %w 単語の一文字(文字あるいは数字あるいは_) %W 単語の一文字ではない。 %< 単語の始まり 例えば、現在の文字は、%wであって、前の文字は%wでない。 %> 単語の終わり 例えば、現在の文字は、%wではなく、前の文字は%wである。
%i これ以降すべての文字は、大文字/小文字の区別がされる。 %I これ以降すべての文字は、大文字/小文字の区別がされない。
[...] リストされた文字のうちのひとつ [^...] リストされた文字のうちのひとつではない。"-"は、範囲を限定するためにクラス内で使われる。 例えば[a-zA-Z0-9_]は、%wと同じことを示す。
(?:...) 単純なグループ化(悪影響はない) (?=...) 肯定的な予期 true if ... が続くが, ... は尽きない。 (?!...) 否定的な予期 true if ... は続かないが、何も尽きるものはない。
数量子は、接頭辞としてつけられる。 以下の接頭辞が定義されている。* 何回あっても良い + 少なくとも一度は ? 全くない。 {min,max} "min" から "max" 回 {min,} 少なくとも "min" 回 {n} 正確に"n"回
数量子は、熱心に マッチする文字列でできる限り長いものをを探そうとします。 できる限り短い文字列を見つけるためには、"?"を数に 付けます。
注意:アトムの中にバックスラッシュを入れる際には、 二度バックスラッシュを書いてください。 (アトムでないことを示す。)
式の中にパーセントマークをつけるときには、パーセントマーク を二度書いてください。(正規表現でないことを示す。)
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]
substitute_all('a(.)', barbara, '%1a', L).
==> L = brabraa
単語の位置を交換するために使います。
substitute('(%w+) (%w+)', 'one two', '%2 %1', L).
==> L = 'two one'
括弧に入れられたものは、すべて、項として認識されます。右から左へ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_all('%<(%w+)', 'a few tokens', L).
=> L = [[a],[few],[tokens]]
match/2/3
match_all/3
substitute/4
substitute_all/4
chop/2
split/2/3
get_line/1/2
戻る
続く..