regex - 使用 Perl 打印整个字符串,直到出现子字符串匹配
问题描述
我正在寻找一个快速解决方案,因为我并不真正专注于 perl/regex。
我有一个字符串如下;
abc_def0_ghi4_jkl_mno_pqr_123456.log some_extra_messages 和随机垃圾
我想要一个小的 perl 脚本(不是单行命令)来搜索 .log 文件名,并删除文件末尾的数字。所以输出看起来像
abc_def0_ghi4_jkl_mno_pqr
有什么建议么?
解决方案
基于您提供的少量信息的快速(也许是肮脏的)答案:
use strict;
use warnings;
my $str = "abc_def0_ghi4_jkl_mno_pqr_123456.log some_extra_messages and random garbage";
my ($name) = ( $str =~ /^(\w+)_\d+\.log/);
print $name, "\n";
这假定名称位于脚本的开头并且仅包含单词字符(字母、数字、下划线)。它将捕获所有内容,直到它到达一系列数字,前面有一个下划线,后面是.log
.
推荐阅读
- c - 如何在freebsd中列出有关使用c的进程的信息?
- .net - .NET 控制台应用程序 80040154 类在复制到不同机器后未注册
- python - 具有不同单元大小的 Seaborn 热图
- html - 每行弯曲多个可折叠元素
- user-interface - UWP xaml:更改面板创建按钮消失
- python - 如何从循环中中断以停止程序运行
- java - 如何获取谷歌 OIDC 访问令牌和刷新令牌?
- pandas - 循环遍历 Pandas 中的列
- flutter - 通过 FlutterOpenWhatsapp 从另一个应用程序打开 WhatsApp 后,如何以编程方式按下“发送”按钮
- swiftui - 我们如何在 swiftUI 2.0 中解决 onEnd 手势中不需要的偏移