match

正規表現で検索して最初に一致した文字列を返す

val = match(p1,p2,p3,p4)

p1:検索される文字列
p2:検索する文字列
p3(0):大文字と小文字を区別するなら1
p4(0):全体を一つの行と見なすなら1

(プラグイン / モジュール : mod_regexp)

解説

p1の文字列からp2に一致した最初の文字列を返します。
p2には正規表現のパターンを指定します。
p3を1にすると大文字と小文字を区別します。0や省略した場合は区別しません。
p4を1にするとメタ文字 ^ と $ が改行直後・直前に対応しません。0や省略した場合は対応します。

正規表現のパターンには通常の文字の他、以下のメタ文字と呼ばれる特殊文字が使えます。
メタ文字を使う場合、HSPスクリプト上では \ は "\\" と表記する事に注意してください。
たとえば、数字と一致するパターンの表記は "\\d" となり、 \ と一致するパターン表記は "\\\\" となります。
また、HSPでの改行 "\n" は\r\nの2文字であることに注意してください。"\n" と一致するパターン表記は "\n" または "\\r\\n" となります。

メタ文字一覧
文字説明
. \n 以外の任意の1文字に一致します。\r とは一致する事に注意してください。
*直前のパターンの0回以上の繰り返しに一致します。たとえば、HSP!* は "HSP" と "HSP!" と "HSP!!" いずれにも一致します。
+直前のパターンの1回以上の繰り返しに一致します。たとえば、HSP!+ は "HSP!" と "HSP!!" には一致しますが、"HSP" には一致しません。
?直前のパターンの0回または 1 回の繰り返しに一致します。たとえば、HSP!? は "HSP" と "HSP!" に一致します。
{n,m}直前のパターンの n 回以上 m 回以下の繰り返しに一致します。たとえば、\d{3,4} は 3桁または4桁の数字に一致しますが 2桁の数字には一致せず、5桁の数字には最初の4桁だけが一致します。mを省略するとn 回以上の繰り返しに一致し、カンマとmを省略するとn 回ちょうどの繰り返しに一致します。{0,1} は ? と同じ意味になり、{1,} は + と、{0,} は * と同じ意味になります。{ }の間には余分な空白などを入れてはいけません。
*? +? ?? {n,m}?* + ? {n,m} のような繰り返し指定のメタ文字は通常、最も長い文字列と一致しますが、これらのメタ文字直後に ? をおくと最も短い文字列と一致します。たとえば、"<abc><def>" という文字列をパターン <.*> で検索した場合、文字列全体と一致しますが <.*?> と検索した場合は "<abc>" と "<def>" の二つに分けて一致するようになります。
[string]string に含まれるいずれかの一文字と一致します。たとえば、HSP[123] は "HSP1" と "HSP2" と"HSP3" に一致しますが "HSP4" には一致しません。また、二つの文字を-でつなげば範囲指定が可能です。例えば [a-z] は任意の英小文字一文字に一致し、[a-zA-Z] は任意の英字一文字に一致します。-自体を検索する場合は [-a-z] のようにします。stringには $ などのメタ文字を使用してもメタ文字と解釈されませんが、一部を除く \ で始まるメタ文字は機能します。
[^string][string] とは逆に string に含まれない任意の一文字と一致します。たとえば、HSP[^1-3] は "HSP4" や "HSP5" に一致しますが "HSP1" と "HSP2" と"HSP3" には一致しません。
|論理和(OR)検索をします。たとえば、abc|def は "abc" と "def" に一致します。| は他の文字より評価の優先順位が低いので ( ) と組み合わせるのが便利です。
(pattern)pattern を一つのグループとします。たとえば、20(09|10) は "2009" と "2010" に一致します。また、pattern に一致する文字列をサブマッチとして後方参照することが出来ます(最大99個)。
(?:pattern)サブマッチとして利用できない以外は (pattern) といっしょです。(pattern)を使う場合に比べてメモリの節約になります。
(?=pattern)pattern に一致する文字列の直前の位置に一致します。たとえば、HSP(?=2|3) は "HSP2" と "HSP3" の"HSP"に一致しますが "HSP1" の"HSP"には一致しません。また、サブマッチとしての利用は出来ません。
(?!pattern)pattern に一致しない文字列の直前の位置に一致します。たとえば、HSP(?!2)\d は "HSP1" や "HSP3" に一致しますが "HSP2" や "HSPa" には一致しません。また、サブマッチとしての利用は出来ません。
\numサブマッチと同じ文字列に一致します。一つ目のサブマッチは\1で最大\99まで指定できます。たとえば、(.)(.)\1\2 は "abab" や "0101" のような交互に繰り返す文字列に一致し、<(.*?)>.*</\1> は "<a>hoge</a>" や "<b>hoge</b>" に一致します。対応するサブマッチがない場合は8進文字コードと見なされます。
^行頭に一致します。つまり、文字列の先頭および \n または \r の直後の位置に一致します。
$行末に一致します。つまり、文字列の最後および \n または \r の直前の位置に一致します。
\\の次にメタ文字をおくと、その文字と一致します。たとえば、\( は "(" に一致し \? は "?" に一致します。また、\\ は "\" に一致します。
\n改行(LF)に一致します。\x0a および \cJ と同じです。
\r改行(CR)に一致します。\x0d および \cM と同じです。
\tタブに一致します。\x09 および \cI と同じです。
\fフォームフィードに一致します。\x0c および \cL と同じです。
\v垂直タブに一致します。\x0b および \cK と同じです。
\cCtrlキーで入力できる制御文字に一致します。\cに続けて英字一文字を指定します。たとえば、\cM は Ctrl + M キー(改行文字)に一致します。
\b単語の境界に一致します。たとえば、run\b は "run" には一致しますが "running" の "run" には一致しません。
\B単語の境界でない位置に一致します。たとえば、run\B は "running" の "run" には一致しますが "run" には一致しません。
\d数字一文字に一致します。[0-9] と同じです。
\D数字以外の一文字に一致します。[^0-9] と同じです。
\sスペースやタブなどの空白文字に一致します。[ \f\n\r\t\v] と同じです。
\S空白文字以外の任意の一文字に一致します。[^ \f\n\r\t\v] と同じです。
\w単語に使用される任意の一文字に一致します。[A-Za-z0-9_] と同じです。
\W単語に使用される文字以外の任意の一文字に一致します。[^A-Za-z0-9_] と同じです。
\x16進文字コードです。\xに続けて2桁の16進数を指定します。たとえば、\x41 は "A" に一致します。
\8進文字コードです。\に続けて3桁の8進数を指定します。たとえば、\101 は "A" に一致します。
\uUnicodeです。\uに続けて4桁の16進数を指定します。たとえば、\u3042 は "あ" に一致します。

サンプル

#include "mod_regexp.as"
a={"
	算数=50
	国語=100
	社会=70
"}
mes match(a,"国語=\\d+")

 ;--------結果-----------
 ;国語=100

関連項目

submatch正規表現で検索して最初に一致したサブマッチ文字列を返す(mod_regexp)
matches正規表現で検索した複数の結果を取得する(mod_regexp)
replace正規表現で文字列の置換を行う(mod_regexp)

情報

プラグイン / モジュールmod_regexp
備考Internet Explorer 5.5 以上が必要
グループ正規表現検索命令
ヘッダファイルcommon\mod_regexp.as