正規表現道場 Part2 (393レス)
前次1-
抽出解除 レス栞

リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
111
(1): 2014/02/01(土)17:24 ID:??? AAS
Q、(*COMMIT) とは逆にマッチが成功したときだけ /g を止める最も簡単な手段は何か?

$_ = "123";
@test = $_ =~ m/1|2|3/g;
print "@test\n";

↑2 がマッチ成功したときに /g を止め、3がマッチしないようにする。
フラグ変数を用意、チェックすれば可能だがもっと手軽な手段はないか。
114
(1): 2014/02/02(日)10:19 ID:??? AAS
>>111
>>112 >>123
/g がループというのはちょっと違う.
リストコンテキストで評価したときはループと言えるが,スカラーコンテキストで評価したときはループではなく,
単に前回マッチした場所を覚えていて続きからマッチングを行うというだけ.

この問題はリストコンテキストで /g を評価したときに,マッチ成功後に途中で止めるいい方法はないかって言う問題だと解釈した.
スカラーコンテキストで評価したときに止めるんなら last を使えば簡単に止まる話.

つまり,while を使っていいんなら,
while (/1|2(*:STOP)|3/g) {
push(@test, $&);
省7
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.024s