You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Perl中使用正则表达式提取指定匹配字符串?

代码调整方案

你现有的代码逻辑已经可以输出对应内容,但缺少你要求的[a-zA-Z]规则校验,且多余的修饰符在逐行处理场景下没有意义,调整后的代码如下:

pdftotext -layout "$KMVAR_local_PathStr" - \
| perl -wne 'print if s!^Girone\s*:\s*([a-zA-Z\s]+)$!$1!'

调整说明

  • 直接通过替换+捕获组实现匹配-提取-输出全流程,不需要分开写判断和打印逻辑,代码更简洁
  • 捕获组([a-zA-Z\s]+)严格匹配仅包含字母、空格的可变内容,不符合规则的行会被自动过滤,匹配规则你可以按需扩展,比如要支持连字符就改成([a-zA-Z\s-]+)
  • 把\h+替换为\s*,兼容冒号前后可能存在的多空格、制表符场景
  • 去掉了多余的g(全局替换,单行处理场景不需要)、m(多行匹配,-n参数逐行读取场景不需要)修饰符

内容的提问来源于stack exchange,提问作者Riccardo Valenti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 00:24:05