このディレクトリの索引

# 出典 :: #156 # ●正規表現の使用環境 # PHP 5.1 # # ●検索か置換か? # 検索 # # ●説明 # 角括弧が対応する始点から終点までをすべて抽出したいです。 # # ●対象データ # ほげ[[hoge:f1=piyo,f2=fuga]ふが[[hogera:]]ぴよ]ほげら[[foo:]ぴよぴよ][[qux:a=xyzzy]] # # ●希望する結果 # ほげ[[hoge:f1=piyo,f2=fuga]ふが[[hogera:]]ぴよ]ほげら[[foo:]ぴよぴよ][[qux:a=xyzzy]] #   1^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^   2^^^^^^^^^^^^^^^3^^^^^^^^^^^^^^ # # ご教授よろしくお願いします。 # 角括弧が対応する始点から終点までをすべて抽出したい(_文字列,[_副文字列|R]) :- atom_chars(_文字列,Chars), 閉じた角括弧の対応を得る(Chars,_抽出文字ならび,_残り文字ならび), atom_chars(_副文字列,_抽出文字ならび), 閉じた角括弧の対応を得る(_残り文字ならび,R,_),!. 角括弧が対応する始点から終点までをすべて抽出したい(_,[]). 閉じた角括弧の対応を得る([],[],[]) :- !. 閉じた角括弧の対応を得る(L1,['['|R2],R) :- 角括弧が開始するまで読み飛ばす(L1,L2), 対応する閉じ角括弧まで文字ならびを得る(L2,R2,R),!. 閉じた角括弧の対応を得る(_,[],[]). 対応する閉じ角括弧まで文字ならびを得る([']'|R1],[']'],R1) :- !. 対応する閉じ角括弧まで文字ならびを得る(['['|R1],['['|R2],R) :- 対応する閉じ角括弧まで文字ならびを得る(R1,R2_1,R3), 対応する閉じ角括弧まで文字ならびを得る(R3,R2_2,R), append(R2_1,R2_2,R2),!. 対応する閉じ角括弧まで文字ならびを得る([A|R1],[A|R2],R) :- 対応する閉じ角括弧まで文字ならびを得る(R1,R2,R). 角括弧が開始するまで読み飛ばす(L1,L2) :- append(_,['['|L2],L1),!.