gpt4 book ai didi

regex - 加载 Regexp::Grammars 后使用 "normal"正则表达式

转载 作者:行者123 更新时间:2023-12-02 06:39:14 24 4
gpt4 key购买 nike

我正在尝试使用 Regexp::Grammars在应用程序中,但它破坏了许多其他正则表达式。例如下面的代码:

$hello = 'hello';
print 'hello 1' if $hello =~ /hello/; #prints "hello 1"
use Regexp::Grammars;
print 'hello 2' if $hello =~ /hello/; #prints nothing

说明了我的问题。我不知道如何处理这个问题,除了重复加载和卸载模块之外,我什至不确定在使用 no 显式卸载模块后是否可以使用扩展正则表达式>。如何允许正常的正则表达式,同时仍然获得 Regexp::Grammars 的强大功能?

最佳答案

您无法卸载模块。模块只是一个脚本。卸载模块就是取消执行它。

但是,该模块确实充当词汇编译指示,因此您可以轻松限制其效果范围。

my $grammar = do {
use Regexp::Grammars;
qr{
...
}x;
# Active here
};
# Not active here

在 Regexp::Grammars 处于事件状态时创建的语法可以在 Regexp::Grammars 未处于事件状态时使用,因此只需仅在定义了语法的情况下使 Regexp::Grammars 处于事件状态即可。 (这个模块的界面多么糟糕!)

如果您的代码组织不良,需要禁用 Regexp::Grammars 中范围,也可以使用

no Regexp::Grammars;

请注意,效果 no Regexp::Grammars; 也是词法范围的。

关于regex - 加载 Regexp::Grammars 后使用 "normal"正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13557180/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com