需要帮助使用 Perl 修复此正则表达式代码吗?

2023-12-28

我需要您的专业帮助来使用 perl 修复此正则表达式代码?

我有这个数据文件...


__Data__
SCSI - test-A
ccccccccccccccccc
aaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbb

__Data__
SCSI - test-B
ccccccccccccccccc
aaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbb

__Data__
SCSI - test-C
ccccccccccccccccc
aaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbb  

我想要以下输出


__Data__
SCSI - test-A

__Data__
SCSI - test-B

__Data__
SCSI - test-C  

相反,我得到的输出缺少__Data__对于两个数据记录。


__Data__
SCSI - test-A
SCSI - test-B
SCSI - test-C  

这里的代码..

$/ = "__Data__"; # setting the input separator variable to __Data__

while(<ReadFile>)
{
   $_ =~ s/(SCSI.*test-(A|B|C)?)(.*)/$1/ms;
   print $_;
}

你告诉 Perl 该行以__DATA__,所以你得到

1: "__Data__"
2: "\nSCSI - test-A\nccc\naaa\nbbb\n\n__Data__"
3: "\nSCSI - test-B\nccc\naaa\nbbb\n\n__Data__"
4: "\nSCSI - test-C\nccc\naaa\nbbb\n"

但你错误地认为你得到了

1: "__Data__\nSCSI - test-A\nccc\naaa\nbbb\n\n"
2: "__Data__\nSCSI - test-B\nccc\naaa\nbbb\n\n"
3: "__Data__\nSCSI - test-C\nccc\naaa\nbbb\n"

解决方案:

my $after_data = 0;
while (<>) {
   if (/^__Data__$/) {
      print;
      $after_data = 1;
   }
   elsif ($after_data) {
      print;
      print "\n";
      $after_data = 0;
   }
}

您还可以使用段落模式:

local $/ = '';
while (<>) {
   print /^(.*\n.*\n)/;
   print "\n";
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

需要帮助使用 Perl 修复此正则表达式代码吗? 的相关文章

  • 正则表达式接受 4 条规则中的 3 条

    我似乎无法让正则表达式正确满足以下要求 长度在 8 到 20 之间的字符串 必须包含至少 1 个大写字母字符 至少 1 个小写字母字符 以及至少 1 个数字或至少 1 个特殊字符字符 或两者 假设特殊字符仅限于包括 我最初是这样写的 A Z
  • 在压缩存档内的文本文件上运行“head”,而不解压存档

    问候 我接手了之前的团队并编写了处理 csv 文件的 ETL 作业 我在 ubuntu 上结合使用 shell 脚本和 perl csv 文件很大 它们以压缩档案形式到达 解压后 很多都超过 30Gb 是的 那是 G 旧进程是在 cron
  • 如何使用正则表达式匹配模式的最后一次出现

    我有一个像这样的字符串 token1 token2 我要匹配 token2 使用正则表达式 它应该匹配的其他可能的情况是 token1 应该匹配 最后一个 token1 应该匹配 最后一个 token1 token2应该匹配 token2
  • 是否有用于 C 字符串的标准 C++ 迭代器?

    有时我需要使用通用 C 迭代器范围接口将 C 字符串传递给函数 first last 是否有针对这些情况的标准 C 迭代器类 或者无需复制字符串或调用的标准方法strlen 编辑 我知道我可以使用指针作为迭代器 但我必须知道字符串在哪里结束
  • Perl 中可以使用哪种语法糖来减少左/右值运算符与 if 语句的代码?

    那里有很多语句 因为 Perl 是一种非常甜蜜的语言 但任何语言中最常用的语句都是 if 语句和设置值的组合 我想我已经找到了很多 但仍然存在一些空白 最终 目标是不必多次编写变量名 这是我到目前为止所拥有的 r s r s unless
  • 为什么不能用反斜杠结束原始字符串? [复制]

    这个问题在这里已经有答案了 我在这里很困惑 尽管原始字符串会转换每个 to 但是当这个 最后出现它会引发错误 gt gt gt r so m e te xt so m e te xt gt gt gt r so m e te xt Synt
  • Perl YAML 模块无法识别标量类型

    我加载以下 yaml 文件 foo bar s 1 hx 0x34 用这段代码 use YAML qw LoadFile Dump use Data Dumper my d LoadFile test yaml print Dumper d
  • 如何确保我的代码永远不会直接退出?

    eval require file subsequent code goes here If file包含一个exit语句 后面的代码就没有机会运行 如何解决以便后续代码始终有机会运行eval已经完成了 中止是不可能的exit call f
  • 检查条件并通过 Zend 中的 Regex 识别 url 中的模式

    我正在实现 Zend Regex 路由 并且必须对 url 执行多次检查 例如 如果这是我的网址 http localhost application public index php module controller action 这是
  • 解析西班牙姓氏

    西班牙姓氏由三部分组成 父亲的名字 可选的母亲姓名 可选配偶的父亲姓名 这三个部分中的每一部分都是一个单词 前面可能带有 De Del De La De Los 或 De Las 这些前缀中的每一个都以大写字母开头 并且每个部分可能只有一个
  • Android:比 android:ellipsize="end" 更好的东西可以将“...”添加到截断的长字符串中?

    这个性质 https stackoverflow com questions 1666736 android textview automatically truncate and replace last 3 char of string
  • Python str.format() 方法的默认 kwarg 值

    我希望尝试使现有字符串的复数化尽可能简单 并且想知道是否有可能得到str format 在查找 kwargs 时解释默认值 这是一个例子 string number of sheep sheep has run away dict comp
  • Bugzilla 中分离客户端的基本权限

    我正在尝试配置一个 Bugzilla 实例 这将允许我的客户登录并为其正在开发 维护的网站提交错误 例如 我创建了 2 个名为 TestProject TestProject2 的产品和一个名为 TestClient 的用户 我想要实现的是
  • 如何找到给定字符串的最长重复子串

    我是java新手 我被分配寻找字符串的最长子字符串 我在网上研究 似乎解决这个问题的好方法是实现后缀树 请告诉我如何做到这一点或者您是否有任何其他解决方案 请记住 这应该是在 Java 知识水平较低的情况下完成的 提前致谢 附 测试仪字符串
  • 将一串数据标记为结构向量?

    因此 我有以下数据字符串 该数据是通过 TCP winsock 连接接收的 并且想要进行高级标记化 将其转换为结构向量 其中每个结构代表一条记录 std string buf 44 william adama commander stuff
  • 使用 Perl 获取 值

    因此 我有一个报告工具 可以在 HTML 文件中输出作业调度统计信息 并且我希望使用 Perl 来使用这些数据 但我不知道如何单步浏览 HTML 表 我知道如何使用 jQuery 来做到这一点 find tr each function v
  • 如何为俚语和表情符号构建正则表达式 (regex)

    我需要构建一个正则表达式来匹配俚语 即 lol lmao imo 等 和表情符号 即 P 等 我按照以下示例进行操作http www coderanch com t 497238 java java Regular Expression D
  • 字符串数组文本格式化

    我有这个字符串 String text Address 1 Street nr 45 Address 2 Street nr 67 Address 3 Street nr 56 n Phone number 000000000 稍后将被使用
  • Javascript split 不是一个函数

    嘿朋友们 我正在使用 javascript sdk 通过 jQuery facebook 多朋友选择器在用户朋友墙上发布信息 但是我收到此错误friendId split 不是函数 这是我的代码 function recommendToFr
  • 仅将 char[] 的一部分复制到 String 中

    我有一个数组 char ch 我的问题如下 如何将 ch 2 到 ch 7 的值合并到字符串中 我想在不循环 char 数组的情况下实现这一点 有什么建议么 感谢您花时间回答我的问题 Use new String value offset

随机推荐

  • android 4.x 上的输入元素在聚焦时无法设置样式

    Update 有一个修复 webkit user modify read write plaintext only 原问题 我试图将其归结为一个简单的例子 我有一个像这样的简单输入元素
  • 使用 NSOpenGLLayer 从单独的线程中绘制

    我正在开发一个应用程序 它需要使用 OpenGL 进行绘制 刷新率至少等于显示器的刷新率 我需要在单独的线程中执行绘图 以便绘图永远不会被激烈的 UI 操作锁定 实际上我正在使用NSOpenGLView结合CVDisplayLink我可以毫
  • 未捕获的类型错误:无法读取未定义的属性“localStorage”

    我在backbonejs应用程序中有以下内容 MODEL var app app ledger Backbone Model extend COLLECTION app ledgerList Backbone Collection exte
  • 控件库的 WPF 样式

    我有一个图书馆 Styles DLL 其中包含带键的 WPF 集合Styles 我有一个班级图书馆 Module DLL 其中包含多个Windows and UserControls可以在各种应用程序之间共享 我用的是带键的Styles定义
  • Gensim:KeyError:“单词不在词汇表中”

    我有一个使用 Python 的 Gensim 库训练过的 Word2vec 模型 我有一个标记化列表 如下所示 词汇量为 34 但我只给出 34 中的几个 b let know buy someth featur mashabl might
  • 将不同长度的列表列表转换为numpy数组[重复]

    这个问题在这里已经有答案了 我有不同长度的列表列表 例如 1 2 3 4 5 6 7 8 9 并想将其转换为numpy整数数组 我理解 子 数组numpy多维数组的长度必须相同 那么 将上面示例中的列表转换为列表的最有效方法是什么 nump
  • 什么在实体中调用 setter?

    在实体框架中 您必须创建一个派生自的类DbContext具有 IDbSet 属性 实体框架中什么调用 setter 以及它是如何工作的 当您的自定义上下文类被实例化时 基类DbContext构造函数调用一个名为的私有方法Initialize
  • 为什么java hashCode()中经常使用XOR,而其他按位运算符却很少使用?

    我经常看到这样的代码 int hashCode return a b Why XOR 在所有位操作中 XOR 具有最好的位混洗属性 这个真值表解释了原因 A B AND 0 0 0 0 1 0 1 0 0 1 1 1 A B OR 0 0
  • Jackson - 结合 @JsonValue 和 @JsonSerialize

    我正在尝试组合 JsonValue and JsonSerialize 让我们从我当前的容器类开始 public class Container private final Map
  • javafx 移植应用程序性能不佳

    我刚刚使用 gradlew 将一个名为 PuzzlePieces 的示例 netbeans javafx 项目移植到 android 中 该应用程序的性能如此糟糕 是什么原因造成的 我的设备 LG E975 4 4 kitkat This
  • 无法转换类型的对象

    在我的 wpf 应用程序中尝试将字符串从一个窗口发送到另一个窗口时出现错误 无法将 WpfApplication4 LoginWindow 类型的对象强制转换为 WpfApplication4 MainWindow 类型 在我的登录窗口中
  • 如何在 jersey 2.0 中使用 hk2 注入常量?

    如何在球衣中使用 HK2 将常量注入某个类 有了Guice 我可以上一些像这样的课程 public class DependsOnFoo Inject public DependsOnFoo Named FOO String foo 我会在
  • python 中基于 websocket 的 MQTT

    python 是否支持通过端口 8080 订阅 mqtt 代理 import sys import paho mqtt client as mqtt def on connect mqttc obj flags rc print rc st
  • 访问图中重复访问次数最少的所有节点

    我有一个基于图块的地图 其中几个图块是墙壁 其他图块是可步行的 可步行的瓷砖构成了我想在路径规划中使用的图表 我的问题是他们有什么好的算法可以找到访问图中每个节点的路径 从而最大限度地减少重复访问吗 例如 地图示例http img220 i
  • app:srcCompat 不适用于 ImageView

    我正在向库项目添加矢量可绘制支持 并使用app srcCompat引用可绘制的矢量 唯一有效的视图是 ImageButton 我不知道为什么 这是我的 build gradle 的相关部分 android defaultConfig vec
  • 从另一台具有不同 Gradle 版本的 PC 导入 Android Studio 项目?

    我有一个用 Android Studio 版本 1 3 2 编写的 Android studio 项目 现在 在另一台装有 Android Studio 2 1 2 的 PC 上 我想导入或打开该项目 但是当我尝试打开时 我的 Gradle
  • 发送 XMLHttpRequest 时缓存结果出现问题?

    我对 AJAX 和缓存的想法很陌生 On the AJAX 向服务器发送请求 http www w3schools com ajax ajax xmlhttprequest send asp来自 W3Schools 它说你应该添加 t Ma
  • 为什么不允许 movl 从内存到内存?

    我想知道集会中是否允许这样做 movl edx eax 我猜它会访问第一个操作数中的内存并放入 第二个操作数的内存 例如 a b 但我还没有看到任何处理此类问题的示例 所以我猜这是不允许的 另外 我被告知这是不允许的 leal esi ed
  • 什么是 Git 修剪?

    我不小心修剪了一些远程分支 我真的不知道这样做的后果是什么 我单击了 Git 扩展中的 修剪远程分支 按钮 认为它会删除远程分支 官方文档说 git prune 从对象数据库中删除所有无法访问的对象 我实在不明白这是什么意思 我猜这可能会删
  • 需要帮助使用 Perl 修复此正则表达式代码吗?

    我需要您的专业帮助来使用 perl 修复此正则表达式代码 我有这个数据文件 Data SCSI test A ccccccccccccccccc aaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbb Data SCSI t