正则表达式匹配 Perl 中字符串的第二次出现

2024-01-08

我正在尝试匹配 perl 中字符串的第一次和第二次出现。输入的前几行(包含在 @intersect 中)是:

          'gi|112807938|emb|CU075707.1|_Xenopus_tropicalis_finished_cDNA,_clone_TNeu129d01  C1:TCONS_00039972(XLOC_025068),_12.9045:32.0354,_Change:1.3118,_p:0.00025,_q:0.50752  C2:TCONS_00045925(XLOC_029835),_10.3694:43.8379,_Change:2.07985,_p:0.0004,_q:0.333824',
          'gi|115528274|gb|BC124894.1|_Xenopus_laevis_islet-1,_mRNA_(cDNA_clone_MGC:154537_IMAGE:8320777),_complete_cds C1:TCONS_00080221(XLOC_049570),_17.9027:40.8136,_Change:1.18887,_p:0.00535,_q:0.998852  C2:TCONS_00092192(XLOC_059015),_17.8995:35.5534,_Change:0.990066,_p:0.0355,_q:0.998513',
          'gi|118404233|ref|NM_001078963.1|_Xenopus_(Silurana)_tropicalis_pancreatic_lipase-related_protein_2_(pnliprp2),_mRNA  C1:TCONS_00031955(XLOC_019851),_0.944706:5.88717,_Change:2.63964,_p:0.01915,_q:0.998852 C2:TCONS_00036655(XLOC_023660),_2.31819:11.556,_Change:2.31757,_p:0.0358,_q:0.998513',

我试图提取的信息是 C1 和 C2 的“更改:[值]”(由制表符分隔),使用以下内容:

#!/usr/bin/perl -w
use strict; 
use File::Slurp;
use Data::Dumper;
$Data::Dumper::Sortkeys = 1;

my @log_change;
foreach (@intersect) {
    chomp;
    my @condition1_match = ($_ =~ /(C1:).*Change:(-?\d+\.\d+)/g);
    my @condition2_match = ($_ =~ /(C2:).*Change:(-?\d+\.\d+)/g);
    push @log_change, "@condition1_match\t@condition2_match";
  }

print Dumper (\@log_change);

Prints:

      'C1: 2.07985    C2: 2.07985',
      'C1: 0.990066    C2: 0.990066',
      'C1: 2.31757    C2: 2.31757',

即 C1 和 C2 的值相同。很明显,我的循环将 C2 的值存储在两个中@condition1_match and @condition2_match.

我的问题是:我如何指定我希望将“Change:[value]”的第一次迭代推送到@condition1_match第二个到@condition2_match ?


发生的情况是,您的正则表达式在您拥有以下内容的情况下尽可能匹配.*。您需要做的是使量词变得懒惰(非贪婪),这是通过添加问号来完成的? it.

my @condition1_match = ($_ =~ /(C1:).*?Change:(-?\d+\.\d+)/g);
                                  #   ^
my @condition2_match = ($_ =~ /(C2:).*?Change:(-?\d+\.\d+)/g);
                                  #   ^

这样,正则表达式将匹配尽可能少的字符,直到它“看到”Change:(-?\d+\.\d+)/g).

您可以在一些在线正则表达式网站上检查您完全匹配的内容,例如这个网站 http://www.regex101.com/r/mD7nU8.

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

正则表达式匹配 Perl 中字符串的第二次出现 的相关文章

随机推荐

  • 为什么非成员 static constexpr 变量不是隐式内联的?

    在 C 17 中 我们得到了内联变量 并且我假设全局 constexpr 变量是隐式内联的 但显然这只适用于静态member变量 这背后的逻辑 技术限制是什么 source 声明为 constexpr 的静态成员变量 但不是名称空间范围变量
  • 当底层模型更改时,QT QmlMap PolyLine 未正确更新

    我正在尝试将多个地理坐标与地图中的折线连接起来 坐标存储在模型 QAbstractListModel 类中 我可以在其中修改 删除和添加 C 中的坐标 简单地显示每个坐标的标记就可以了 但是当我将它们与折线连接并从模型中删除一些现有坐标时
  • 将 Base64 字符串加载到画布时遇到问题

    我正在尝试将 Base64 字符串从数据库加载到画布 我通过执行相反的方法获得了这个字符串 在画布上绘制后将其保存到我的数据库中 所以 现在我想将其加载回另一个画布上 我已经尝试过在网络和 StackOverflow 上其他地方找到的这段代
  • 尝试使用 getRange 时出现类型错误

    NOTE This is a proposal of canonical Q A Please discuss it on Meta https meta stackoverflow com q 420764 1595451 作为新的 Go
  • 使用数据框架构的 Spark 地图数据框

    我有一个从 JSON 对象创建的数据框 我可以查询这个数据框并将其写入镶木地板 由于我推断了架构 因此我不一定知道数据框中的内容 有没有办法使用自己的架构来输出列名称或映射数据框 The results of SQL queries are
  • 如何检测浏览器何时在 Web 登录中输入存储的密码

    我有一个网站 可以检测何时输入用户名和密码 然后启用登录按钮 问题是 如果浏览器输入它记住的用户名和密码 则登录按钮永远不会启用 JavaScript 有没有办法检测浏览器输入此信息 你可以用以下方式进行轮询setInterval 但是为什
  • 如何将 Invoke-RestMethod 的响应转换为 XML?

    参考help https learn microsoft com en us powershell module microsoft powershell utility invoke restmethod view powershell
  • 将 URL 参数传递到 HTML 表单 Google Web App

    我已经浏览了大部分与此相关的问题 但没有找到对我有帮助的解决方案 我已经一一应用了它们 我有一个 HTML 表单 我正在通过 google 将其发布为网络应用程序 我需要用该参数预先填充输入框 code gs function doGet
  • 为什么 March=native 会破坏我的程序?

    我正在编译程序 include
  • 如何让liveserver渲染django模板?

    我一直在搞一个教程网站 我发现当我尝试打开 Django 模板时 我的 VS Code LiveServer 插件无法正常工作 我应用的 CSS 丢失了 尽管一切都在我的本地开发服务器中正确呈现 并且模板语言代码实际上被打印到屏幕上而不是被
  • 如何创建/管理作业队列[重复]

    这个问题在这里已经有答案了 我有一个有序列表中包含数千个 shell 作业的队列 我需要从上到下并行运行 4 个作业以避免 CPU 饱和 如果我只是将作业列表拆分为 4 个批处理脚本 则运行时不会对齐 其中一个脚本将远远领先于其他脚本 但仍
  • STOMP 或 XMPP - 通过 websocket

    我正在开发一个涉及实时聊天 消息传递 包括群聊 的项目 我以前使用过 websockets 所以我开始使用 spring websockets 来研究这个问题 并且我阅读了一些关于实现它的最佳方法的文章 然后我遇到了 STOMP 作为 we
  • 使用 Capistrano,如何回滚到特定版本?

    使用 Capistrano 如何回滚到特定版本 我的服务器文件夹中有一个 release 文件夹 我如何回滚到特定的文件夹 我是否可以在本地计算机上获取版本列表 我正在使用 GIT 但这不起作用 cap deploy s revision
  • 打字稿“不是索引器的子类型”,是什么意思?

    我正在通过阅读来学习 Typescript这份官方文件 https www typescriptlang org docs handbook interfaces html关于索引器类型 我无法理解这段代码 interface Number
  • 大范围连续整数的数据结构?

    假设内存中有大量连续整数 每个整数都属于一个类别 两个操作必须是 O log n 将范围从一个类别移动到另一个类别 以及查找给定范围的类别计数 我很确定只要第一个操作的正确实现 第二个操作就可以轻松解决 每个整数都从一个类别开始 因此我从一
  • 带凭证的 AngularJS

    我一直在开发一个 AngularJS 项目 该项目必须将 AJAX 调用发送到 Restfull Web 服务 该网络服务位于另一个域中 因此我必须在服务器上启用 cors 我通过设置这些标头来做到这一点 cresp getHttpHead
  • 在 bash 中仅杀死管道中的第一个进程

    如果我有一个长时间运行的命令定期输出一些数据 例如tail F我想用 awk 或其他东西 处理 tail F service log awk END print How to kill the first process only tail
  • 二进制响应内容,请求库

    我正在阅读有关请求库的文档 它似乎已经非常过时了 我一步一步尝试了其中显示的所有示例 并在尝试运行以下代码时遇到了问题 import requests from PIL import Image from StringIO import S
  • 现有 ASP.NET 4 解决方案中的高效 URL 屏蔽/伪装/隐藏

    我当前的系统使用 IIS 6 和 7 使用 ASP NET 和 NET 4 中的 C 编写 我的目的是完全隐藏网址 根据客户请求 IE https myapp it mydomain com Secure folder1 folder2 f
  • 正则表达式匹配 Perl 中字符串的第二次出现

    我正在尝试匹配 perl 中字符串的第一次和第二次出现 输入的前几行 包含在 intersect 中 是 gi 112807938 emb CU075707 1 Xenopus tropicalis finished cDNA clone