在 Perl 中覆盖区分大小写的正则表达式

2023-11-25

是否可以覆盖 Perl 中先前定义的正则表达式的区分大小写?例如,如果我有以下内容:

my $upper = qr/BLAH/x;
my $lower = qr/$upper/xi;
warn "blah" =~ $lower

我希望第三行打印出正匹配。


您可以添加/i正则表达式如下:

use re qw( is_regexp regexp_pattern );

sub make_re_case_insensitive {
   my ($re) = @_;

   return "(?i:$re)" if !is_regexp($re);

   my ($pat, $mods) = regexp_pattern($re);
   if ($mods !~ /i/) {
      $re = eval('qr/$pat/'.$mods.'i')
         or die($@);
   }

   return $re;
}

但这不会影响qr/(?-i:BLAH)/.


这更多的是一个代码重用问题,所以我不必制作两个非常相似的正则表达式来测试大写或小写。

my $pat = 'BLAH';
my $re1 = qr/$pat/x;
my $re2 = qr/$pat/xi;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Perl 中覆盖区分大小写的正则表达式 的相关文章

随机推荐

  • 地址清理程序不适用于 Windows 上的 bash

    目前在 Windows 上的 Ubuntu Bash 上运行 llvm clang clang format 和 clang modernize 我想使用谷歌发布的一套清理工具 包括地址 内存和线程清理 fsanitize 选项似乎都不起作
  • 将字符串转换为 long long

    我正在使用 VS 2008 创建一个 C DLL 非托管 项目 我需要将 char 转换为 long long 类型 有简单的方法吗 提前致谢 最简单的方法是使用 std stringstream 它也是最类型安全的 std strings
  • 兼容类型和参数类型限定符

    这两个声明的类型是否兼容 void f char char void f char restrict char restrict 或类似 void g char void g char const 我很难在标准中找到涵盖该问题的任何内容 我
  • Dropwizard HK2注射液

    我对使用 dropwizard 还很陌生 目前我正在尝试实现 HK2 依赖注入 这在资源内部工作得很好 但在资源外部却不起作用 这是我正在做的事情 Client client new JerseyClientBuilder environm
  • 输入特征以获得默认参数提升

    免责声明 我知道这个问题的答案 我认为这可能会引起一些普遍的兴趣 问题 我们怎样才能拥有一种类型特征 能够产生由执行而产生的类型默认参数促销 动机 我希望能够可移植地使用变量参数 例如 void foo char const fmt Ple
  • ASP MVC C#:是否可以将动态值传递到属性中?

    好吧 我对 C 很陌生 我正在尝试使用 ASP MVC2 创建一个小网站 我想创建我自己的授权属性 但如果可能的话 我需要传递一些值 例如 CustomAuthorize GroupID Method Parameter public Ac
  • 如何改进该 Java 代码以查找字符串中的子字符串?

    最近 我被要求提交一份工作问题的解决方案 Problem 在字符串中查找子字符串 Input Little star s deep dish pizza sure is fantastic Search deep dish pizza Ou
  • 对 x86 上 L1 缓存行的独占访问?

    如果有一个 64 字节的缓冲区被大量读 写 那么它很可能会保留在 L1 中 但有什么办法可以强制这种行为吗 例如 给予一个核心对这 64 字节的独占访问权限 并告诉它不要与其他核心或内存控制器同步数据 以便这 64 字节始终存在于一个核心的
  • “self”在 iOS 5.1 上的调试器中不可用

    我正在尝试调试在 iOS 5 1 下运行的问题 当我在出现错误的代码内的调试器中停止并尝试使用调试器打印某些内容时 我收到消息 错误 警告 在声称捕获的上下文中停止 Objective C 对象指针 但 self 不可用 假装我们 在一般背
  • IE 的 ajax (XDR) 响应不一致

    我正在从 iframe 发出 ajax 请求 该请求通过 IE 插件注入到每个页面上 我用的是IE跨域请求因为 jQuery 的 ajax 在 IE 上失败 这在 IE8 和 9 上的运行时间为 75 另外 25 xdr onload甚至不
  • 从 RPC 编码的 WSDL 生成 Java 客户端的最简单方法是什么

    我对 Web 服务的概念不熟悉 目前正在开发一个项目 需要通过 SOAP 从外部应用程序检索一些数据 该应用程序提供了 RPC 编码的 WSDL 目前 我发现由于 RPC 被取代 用 Java 为该服务创建客户端非常困难 到目前为止 我得到
  • 从 .NET 应用程序捕获控制台输出 (C#)

    如何从 NET 应用程序调用控制台应用程序并捕获控制台中生成的所有输出 请记住 我不想先将信息保存在文件中 然后重新列出 因为我希望实时接收它 使用以下命令可以很容易地实现这一点ProcessStartInfo RedirectStanda
  • SCRIPT、STYLE 和 LINK 元素上的类型属性是否仍然需要?

    您将看到许多网站具有以下类型的代码 脚本元素 链接元素 风格元素 我的问题是这样的 Are the type当今流行的浏览器需要哪些属性 通俗指 IE 8 Firefox Webkit Opera 和 Chrome 如果你会发生什么do n
  • 在 Android Service 类中哪里停止/销毁线程?

    我通过以下方式创建了线程服务 public class TCPClientService extends Service Override public void onCreate Measurements new LinkedList
  • psycopg2 的 AWS Lambda 层

    我正在尝试创建一个新的 lambda 层来使用 psycopg2 导入 zip 文件 因为该库使我的部署包超过 3MB 并且我再也看不到 lambda 函数中的内联代码 我使用 Python 3 7 为以下 2 种情况创建了 lambda
  • 导入模块只是为了运行它

    我有一个 JavaScript 文件 它为我正在使用的表单验证库注册验证器 这些验证器可以通过该库访问 因此我不需要将其导入到任何地方 我只需要确保它运行一次 如何在 es6 中以这种方式导入模块 项目中执行此操作的最佳位置是什么 我目前将
  • 如何在firebase云函数中从通配符获取数据

    假设我触发以下事件ref users userId items newItem 我想从通配符内部获取一个值userId 我努力了var token event params userId token但它返回未定义 有什么建议么 在 fire
  • Gradle:如何从 JScience jar 依赖项中排除 javax.realtime 包(多个 dex 定义)

    我在 Android 应用程序中使用 Gradle 我想使用 JScience 库依赖项 我以这种方式添加了库 dependencies compile fileTree dir libs include jar compile org j
  • 自定义弹出编辑器中的 kendoui 验证工具提示未正确定位

    请参见jsfiddle例如 空白 名字 字段以显示验证工具提示 在正常形式中 验证工具提示正确地位于每个元素的右侧 但在网格的弹出编辑器中 它仍然尝试将工具提示放置在元素下方 就像它在内联编辑一样 我努力了 span class k inv
  • 在 Perl 中覆盖区分大小写的正则表达式

    是否可以覆盖 Perl 中先前定义的正则表达式的区分大小写 例如 如果我有以下内容 my upper qr BLAH x my lower qr upper xi warn blah lower 我希望第三行打印出正匹配 您可以添加 i正则