regex - 编译正则表达式时可以捕获 "Unrecognized escape"警告吗?

标签 regex perl

我正在从配置文件中读取正则表达式,其中可能包含也可能不包含无效语法。 (它被锁定在防火墙后面,所以我们不要进入安全。)我已经能够测试一些错误并给出友好的消息。

这一次就没有这样的运气了:

Unrecognized escape \Q passed through in regex

我知道是什么原因造成的,我只是想知道我是否可以在 Perl 5.8 中捕获它。到目前为止,它阻止了我检查这种情况的努力。

所以问题是:有人知道如何捕获它吗?我必须重定向 STDERR 吗?

最佳答案

您可以将警告设为 FATAL 并使用 block eval:

#!/usr/bin/perl

use strict;
use warnings;

my $s = '\M';

my $r = eval {
    use warnings FATAL => qw( regexp );
    qr/$s/;
};

$r or die "Runtime regexp compilation produced:\n$@\n";

关于regex - 编译正则表达式时可以捕获 "Unrecognized escape"警告吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/889850/

相关文章:

regex - sed错误: bad option in substitution expression

perl - 是否有 PDL API 的符号实现?

regex - 以括号结尾的句子的标题大小写

asp.net-mvc - asp.net mvc 4 - razor View 中的 DataAnnotations 验证(正则表达式)

python - 要求django url中变量的最小长度

快速正则表达式。特定数字格式的模板

javascript - 如何提取正则表达式中由单词后跟分号分隔的句子?

perl - sed + 从 solaris 系统上的每一行中删除所有前导和尾随空格

Perl 解释器 : convert '\n' into newline?

regex - 如何使用Linux命令工具去除字符串开头和结尾的数字?