170
X 3017 : 2013 (ISO/IEC 30170 : 2012)
先順位が最も高い部分文字列が選択される。《パターン》のそれぞれの要素は,対象文字列の部分文字列に
次のようにマッチする。
a) 《パターン》は次の部分文字列にマッチする。
1) 《パターン》が《候補》1の場合は,《候補》1がマッチする文字列にマッチする。
2) 《パターン》が《パターン》1 “|” 《候補》2の場合は,《パターン》1又は《候補》2がマッチする文字列にマ
ッチする。《パターン》1がマッチする文字列の方が,優先順位が高い。
例1 "ab".slice(/(a-ab)/)は,"ab" ではなく "a" を返す。
b) 《候補》は次の部分文字列にマッチする。
1) 《候補》が[空]の場合は,空文字列にマッチする。
2) 《候補》が《候補》3 《項》の場合,《候補》は,前半部分が《候補》3にマッチし,後半部分が《項》にマッチ
するような部分文字列にマッチする。
そのような部分文字列が二つ以上ある場合,優先順位は次のように決定する。
i) 《候補》3がマッチする候補が二つ以上ある場合,優先順位が高い候補を前半部分とする部分文字列
の方が,優先順位が高い。
例2 "abc".slice(/(a-ab)(c-b)/)は,"abc" ではなく "ab" を返す。この場合,
(a-ab)は(c-b)より優先される。
ii) 部分文字列の前半部分が同じで,かつ,《項》がマッチする候補が二つ以上ある場合,優先順位が
高い候補を後半部分とする部分文字列の方が,優先順位が高い。
例3 "abc".slice(/a(b-bc)/)は,"abc" ではなく "ab" を返す。
c) 《項》は次の部分文字列にマッチする。
1) 《項》が《アトム》1の場合は,《アトム》1がマッチする文字列にマッチする。
2) 《項》が《アトム》2 《量化子》の場合は,次の文字列にマッチする。
i) 《量化子》が “*” の場合は,《アトム》2がマッチする文字列の0個以上の並びにマッチする。
ii) 《量化子》が “+” の場合は,《アトム》2がマッチする文字列の1個以上の並びにマッチする。
iii) 《量化子》が “・” の場合は,《アトム》2がマッチする文字列の0個又は1個の並びにマッチする。
より長い文字列の方が優先順位が高い。
例4 "aaa".slice(/a*/)は,"","a" 又は "aa" のいずれでもなく,"aaa" を返す。
3) 《項》が《アンカー》の場合は,対象文字列S中の特定の位置にある空文字列に,次のようにマッチす
る。
i) 《アンカー》が “\A” の場合は,Sの先頭の空文字列にマッチする。
ii) 《アンカー》が “^” の場合は,Sの先頭又は《行終端子》の直後の空文字列にマッチする。ただし,
《行終端子》の直後の空文字列にマッチする場合,その《行終端子》の後に最低一文字が存在しなけ
ればならない。
iii) 《アンカー》が “\z” の場合は,Sの終端の空文字列にマッチする。
iv) 《アンカー》が “$” の場合は,Sの終端又は《行終端子》の直前の空文字列にマッチする。
d) 《アトム》は次の文字列にマッチする。
1) 《アトム》が《パターン文字》の場合は,《パターン文字》が表す文字Cにマッチする。大小文字同一視
フラグ属性が真のRegexpクラスのインスタンスのパターン属性中に《アトム》が存在する場合は,
Cが小文字の場合はCに対応する大文字にも,Cが大文字の場合はCに対応する小文字にも《アト
ム》はマッチする。
――――― [JIS X 3017 pdf 176] ―――――
171
X 3017 : 2013 (ISO/IEC 30170 : 2012)
2) 《アトム》が《グループ化》の場合は,《グループ化》がマッチする文字列にマッチする。
3) 《アトム》が “.” の場合は,《行終端子》以外の文字にマッチする。《アトム》が複数行フラグ属性が真
のRegexpクラスのインスタンスのパターン属性中に存在する場合は,《アトム》は《行終端子》にも
マッチする。
4) 《アトム》が《アトムエスケープ列》の場合は,《アトムエスケープ列》がマッチする文字列にマッチす
る。
e) 《グループ化》は,その《パターン》がマッチする文字列にマッチする。
f) 《アトムエスケープ列》は次の文字列にマッチする。
1) 《アトムエスケープ列》が《10進エスケープ列》の場合は,《10進エスケープ列》がマッチする文字列に
マッチする。
2) 《アトムエスケープ列》が《正規表現文字エスケープ列》の場合は,《正規表現文字エスケープ列》が表
す文字を内容とする長さ1の文字列にマッチする。
g) 《10進エスケープ列》は次の文字列にマッチする。
1) 《0以外の10進数字》が表す整数をiとする。
2) を《パターン》中に存在する1から数えてi番目の《グループ化》とする。《グループ化》は,その “(”
が出現する順に《パターン》の左側から数える。
3) 《パターン》の中で《10進エスケープ列》がGよりも前に存在する場合は,《10進エスケープ列》はど
の文字列にもマッチしない。
4) がマッチする文字列がある場合は,《10進エスケープ列》はGがマッチする文字列にマッチする。
5) 上記のいずれでもない場合は,《10進エスケープ列》はどの文字列にもマッチしない。
h) 《正規表現文字エスケープ列》は次の文字を表す。
− 《正規表現エスケープ列》は8.7.6.3.3の表1で示す文字を表す。
− 《正規表現非エスケープ列》は《正規表現メタ文字》が表す文字を表す。
− 《16進エスケープ列》は8.7.6.3.3で規定されるとおりの文字を表す。
− 《正規表現8進エスケープ列》は《8進エスケープ列》と同様に解釈する(8.7.6.3.3参照)。
− 《正規表現制御エスケープ列》は,文字符号が《正規表現制御エスケープ文字》が表す文字の文字符号
と0x9fとのビット単位の論理積とする文字を表す。ただし,《正規表現制御エスケープ文字》が “・”
の場合は,《正規表現制御エスケープ列》は文字符号が0x7fの文字を表す。
15.2.15.5 マッチ処理
文字列Sに対し,《パターン》Pのマッチが成功するとは,PがマッチするSの部分文字列(S自身も含む。)
が存在することである。
a) 添字が指定された場合は,その添字の位置から開始し,Sの終端で終了するようなSの部分文字列に
対して,Pのマッチが試みられる。ただし,Pが部分文字列にマッチする場合は,マッチ処理の結果
のMatchDataクラスのインスタンスの文字列属性の値はマッチが試みられるSの部分文字列ではな
く,Sとする。
b) マッチ処理は,マッチが成功する場合はMatchDataクラスのインスタンス(15.2.16参照)を,失敗
する場合はnilを返す。
c) atchDataクラスのインスタンスは次のようにして生成される。
1) がマッチするSの部分文字列をBとする。
2) atchDataクラスの直接のインスタンスを生成する。それをMとする。
――――― [JIS X 3017 pdf 177] ―――――
172
X 3017 : 2013 (ISO/IEC 30170 : 2012)
3) を,Mの文字列属性(15.2.16.1参照)に設定する。
4) 新たな空リストLを生成する。
5) 部分文字列Bと,Bの先頭の文字のS中での添字との組を,Oとする。OをLの末尾に追加する。
6) 内のそれぞれの《グループ化》Gについて,その “(” がPに出現する順に,次の手順を行う。
i) Pのマッチ処理において,GがBの部分文字列にマッチする場合は,その部分文字列をBGとする。
部分文字列BGと,BGの先頭の文字のS中での添字との組を,Oとする。OをLの末尾に追加す
る。
ii) そうではない場合は,その部分文字列及び部分文字列の添字がnilである組をLに追加する。
7) をMのマッチ結果属性に設定する。
8) このMを,マッチ処理が返すMatchDataクラスのインスタンスとする。
d) マッチ処理は “~” という名前の局所変数束縛を,そのような名前の束縛がない場合は作成し,ある場
合はその束縛の値を更新する。この束縛はRegexp.lastmatchメソッドによって利用される
(15.2.15.6.3参照)。束縛の作成又は更新は,次のようにして行われる。
1) マッチ処理の結果をMとする。
2) “~” を《局所変数識別子》と仮定し,9.2の記述に従い局所変数の名前解決を行う。“~” という名前の
束縛が解決される場合は,その束縛の値をMに置き換える。
3) 名前が解決されない場合は, 局所変数束縛集合 に積まれた《ブロック》に対応しない局所変数束縛
の集合で, 局所変数束縛集合 中で最も上にあるものに,名前が “~” で値がMの局所変数束縛を
追加する。
e) 規格適合処理系は変数束縛の名前として “~” 以外の名前を用いてもよい。ただし,その名前は《局所
変数識別子》の形式であってはならない。
15.2.15.6 特異メソッド
15.2.15.6.1 Regexp.compile
Regexp.compile(*args)
可視性 : public
動作 : newメソッドと同じとする(15.2.3.3.3参照)。
15.2.15.6.2 Regexp.escape
Regexp.escape(string)
可視性 : public
動作 :
a) tringがStringクラスのインスタンスでない場合は,このメソッドの動作は未規定とする。
b) tringの内容をSとする。
c) その内容がSと同じである新しく作ったStringクラスの直接のインスタンスを返す。ただし,戻り
値のStringクラスのインスタンスでは,表4の左側の列の文字は全て右側の列の文字列に置き換え
られる。
――――― [JIS X 3017 pdf 178] ―――――
173
X 3017 : 2013 (ISO/IEC 30170 : 2012)
表4−Regexpのエスケープされた文字
置き換えられる文字 エスケープシーケンス
0x0a “\n”
0x09 “\t”
0x0d “\r”
0x0c “\f”
0x20 “\” 0x20
“#” “\#”
“$” “\$”
“(” “\(”
“)” “\)”
“*” “\*”
“+” “\+”
“-” “\-”
“.” “\.”
“・” “\・”
“[” “\[”
“\” “\\”
“]” “\]”
“^” “\^”
“[{” “\[{”
“|” “\|”
“}]” “\}]”
15.2.15.6.3 Regexp.lastmatch
Regexp.lastmatch(*index)
可視性 : public
動作 :
a) “~” を《局所変数識別子》と仮定し,9.2の規定に従い局所変数の名前解決を行う。
b) 名前解決が成功し,その値がMatchDataクラスのインスタンスである場合は,Mをそのインスタン
スとする。名前解決が失敗した場合は,nilを返す。
c) ndexの長さが0の場合はMを返す。
d) ndexの長さが2以上の場合は,ArgumentErrorクラスの直接のインスタンスを例外として発生させ
る。
e) ndexの長さが1の場合は,その唯一の実引数をAとする。
f) がIntegerクラスのインスタンスでない場合は,このメソッドの動作は未規定とする。
g) を実引数とし “[]” メソッド(15.2.16.3.1参照)をMに対して呼び出し,呼出し結果の値をRとす
る。
h) を返す。
15.2.15.6.4 Regexp.quote
Regexp.quote
可視性 : public
動作 : escapeメソッドと同じとする(15.2.15.6.2参照)。
15.2.15.7 インスタンスメソッド
15.2.15.7.1 Regexp#==
――――― [JIS X 3017 pdf 179] ―――――
174
X 3017 : 2013 (ISO/IEC 30170 : 2012)
==(other)
可視性 : public
動作 :
a) therがRegexpクラスのインスタンスでない場合は,falseを返す。
b) レシーバとotherとの対応する属性の値が同じである場合は,trueを返す。
c) それ以外の場合は,falseを返す。
15.2.15.7.2 Regexp#===
===(string)
可視性 : public
動作 :
a) tringがStringクラスのインスタンスでない場合は,このメソッドの動作は未規定とする。
b) tringの内容をSとする。
c) に対してレシーバのパターン属性のマッチを試みる(15.2.15.4及び15.2.15.5参照)。マッチ処理の結
果をMとする。
d) がMatchDataクラスのインスタンスの場合は,trueを返す。
e) そうではない場合は,falseを返す。
15.2.15.7.3 Regexp#=~
=~(string)
可視性 : public
動作 :
a) tringがStringクラスのインスタンスでない場合は,このメソッドの動作は未規定とする。
b) tringの内容をSとする。
c) に対してレシーバのパターン属性のマッチを試みる(15.2.15.4及び15.2.15.5参照)。マッチ処理の結
果をMとする。
d) がnilの場合は,nilを返す。
e) がMatchDataクラスのインスタンスの場合は,Mのマッチ結果属性の最初の要素をPとする。P
の部分文字列の添字をiとする。
f) その値がiのIntegerクラスのインスタンスを返す。
15.2.15.7.4 Regexp#casefold・
casefold・
可視性 : public
動作 : レシーバの大小文字同一視フラグ属性を返す。
15.2.15.7.5 Regexp#initialize
initialize(source, flag=nil)
可視性 : private
動作 :
a) ourceがRegexpクラスのインスタンスの場合は,sourceのパターン属性をSとする。sourceがString
クラスのインスタンスの場合は,sourceの内容をSとする。それら以外の場合は,このメソッドの動
作は未規定とする。
――――― [JIS X 3017 pdf 180] ―――――
次のページ PDF 181
JIS X 3017:2013の引用国際規格 ISO 一覧
- ISO/IEC 30170:2012(IDT)
JIS X 3017:2013の国際規格 ICS 分類一覧
- 35 : 情報技術.事務機械 > 35.060 : 情報技術に使用される言語