- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Quantifier follows nothing in regex; marked って?)
正規表現でのQuantifier follows nothing in regex; markedって?
このQ&Aのポイント
- 正規表現のパターン内でQuantifier follows nothing in regexエラーが発生します。
- $COOKIE_PREFIX変数の定義が別のファイルで使用されているため、エラーが発生しています。
- エラーメッセージの解決方法は、$COOKIE_PREFIX変数の前にmain::を付けて直すことです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
自信がないんですが、量指定子と紛らわしいといっているんだと思いま す。以下の例なら何も言われませんでした。参考URLも参考になると思いま す use warnings; use strict; our $COOKIE_PREFIX = 'aaa'; my $name = 'aaaa_bbb'; # Quantifier follows nothing in regex; ... # 量指定子{}と紛らわしい ? # if ( not $name =~ /$main::{COOKIE_PREFIX}_(.+)/ ) { # print "test1\n"; # } # else { # print "test2\n"; # } # 何も言われない if ( not $name =~ /${main::COOKIE_PREFIX}_(.+)/ ) { print "test1\n"; } else { print "test2\n"; }
お礼
すみません。今回のコーディングに件のエラーメッセージは関係なかったようです。 メインルーチンで定義されている変数$COOKIE_PREFIXを別のファイルで用いるために main:: を付けたのですが、問題は正規表現 $name =~ /${COOKIE_PREFIX}_(.+)/ のどこに main:: を入れるのかという点で、私は $main::{COOKIE_PREFIX} と記述しました。 その結果が Quantifier follows nothing in regex; marked by <-- HERE in m/* <-- HERE main::COOKIE_PREFIX_(.+)/ at SeveralRoutine.pl line 173, line 855. というエラーになったのですが、 「正規表現中で量指定子は何にも伴われていない」 という指摘に対して、件の正規表現の方は、ちゃんと 「.」(全ての文字) という文字指定子を記述しています。 それでおかしいな、どういうことなんだと質問したわけですが、_--_1l1_1_さんのコードを見て気付きました。 $name =~ /${main::COOKIE_PREFIX}_(.+)/ これが正解だったんですね。 ありがとうございました。