web-dev-qa-db-ja.com

エスケープされていない左中括弧の正規表現エラー

私は正規表現の専門家ではないので、ここで何を変更することになっているのか理解できません。

これら2つのエラーが発生する

正規表現でエスケープされていない左中括弧は廃止され、正規表現で渡されます。 /usr/share/Perl5/Debconf/Question.pmの72行目のm/^(.*?)(\\)?\${ <-- HERE ([^{}]+)}(.*)$/で_<-- HERE_によってマークされています。

正規表現でエスケープされていない左中括弧は廃止され、正規表現で渡されます。 /usr/share/Perl5/Debconf/Config.pm行30のm/\${ <-- HERE ([^}]+)}/の_<-- HERE_でマーク.

72行目にジャンプするとこれが見えます

_while ($rest =~ m/^(.*?)(\\)?\${([^{}]+)}(.*)$/sg) {
_

これは非推奨です警告コードが機能しなくなる将来的にを示します。

{を文字どおり照合する場合は、エスケープする必要があります。

つまり、最初の{\{に置き換えることで、問題を解決(警告を停止)できます。

12
ikegami

左中括弧または右中括弧をエスケープする代わりに、Unicodeの同等の値を使用するのはどうですか?そのようです:

while ($rest =~ m/^(.*?)(\\)?\$\x7B([^\x7B\x7D]+)\x7D(.*)$/sg) {

私も同じような問題を抱えていましたが、これで解決しました。

0
Jacques