正则表达式提取字段

时间:2017-11-14 16:18:32

标签: regex

我有一个正则表达式从完整命令中提取脚本名称。它适用于大多数情况,但不适用于样本数据的第一行。

示例数据

qcst_out_macroPlayback_13918_14112017-163000.29129.xml
qcst_mxtimingMonitoring.sh -SpecificInputLaunchers
qcst_tps_monitoring.sh -LatestDeals

输出

macroPlayback (not working)
mxtimingMonitoring (working)
monitoring (working)

正在使用第一行的正则表达式

\S+_(?<ScriptName>[^\.]+)\.\S+

https://regex101.com/r/cFjn85/1

1 个答案:

答案 0 :(得分:1)

代码

See regex in use here

^\S+_\K[a-z]+

如果您的正则表达式中没有\K,则可以使用以下代码。这会将您要查找的内容捕获到第一个捕获组中。

^\S+_([a-z]+)

说明

  • ^在行开头处断言位置
  • \S+匹配任何非空白字符一次或多次
  • _字面匹配下划线字符_
  • \K重置报告的匹配的起点。最终匹配中不再包含任何以前消费的字符
  • [a-z]+匹配集a-z中的一个或多个字符(小写ASCII字母字符)

注意:修饰符gmi用于使正则表达式全局,多行和不区分大小写(将大写ASCII字母字符与[a-z]匹配)