文字列、パターン・マッチング、スキャナのテキスト処理のための正規表現。...
移動
次へ 前へ
上へ 最上
詳細
match/2/3
match_all/3
substitute/4
substitute_all/4
chop/2
split/2/3
get_line/1/2
参考
算術比較
算術式評価
アトム項処理
文書処理と正規表現
黒板
バイナリ入出力
文字入出力
制約処理
Compilation
節の生成と削除
節の検索と情報
グローバル変数
文法規則
リスト
論理と制御
全解
配布されたMinervaプロセス間の通信
ストリームの選択と制御
サーブレット
項の比較
項の生成と分解
項の入出力
項の単一化
項ベクター
項ストリーム
XML (eXtended Markup Language) 項へのサポート
非同期タイマー処理へのサポート
型検査
イフコンピュータ > MINERVA > マニュアル > レファレンス > 述語 > 文書処理と正規表現

文書処理と正規表現

文字列、パターン・マッチング、スキャナのテキスト処理のための正規表現。 文書処理述語:

  • match/2/3
  • match_all/3
  • substitute/4
  • substitute_all/4
  • split/2/3
  • chop/2
  • get_line/1/2

正規表現:

正規表現は、単純な文字とメタ文字の連続です。 メタ文字ではないではないすべての文字は、それ自身を 表わします。

例:

	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, split/2/3, chop/2, get_line/1/2,

続く..
match/2/3
正規表現「regexp」が「文字列(string)」を受け入れるかどうか調べます。 ...
match_all/3
正規表現regexpがstring(文字列)を受け入れるかどうか調べて、マッチするリストを復帰します。...
substitute/4
部分文字列を取り替えます...
substitute_all/4
すべての部分文字列を置換える...
chop/2
最初と最後の空白を削除する。...
split/2/3
文字列のトークンを返す...
get_line/1/2
MINERVA
ifcomputer logo
f
Expert Services on the Web
言語
English
Japanese
サーバー
USA
Japan
サイトマップ
索引
目次
全体目次
全体索引
印刷向き
imode
PDA
探索
document: http://www.ifcomputer.co.jp/MINERVA/Manual/Reference/Predicates/regexp/home_jp.html
published 2012/2/6 update 2002/7/4 (c) 1996-2009 IF Computer Japan
IF Computer 〒113-0022 Tel 03-5814-3352 start (AT) ifcomputer.com
Customer Support 東京都文京区千駄木5-28-2   http://www.ifcomputer.co.jp
冒頭へ managed with ubiCMS