我有一个正则表达式从完整命令中提取脚本名称。它适用于大多数情况,但不适用于样本数据的第一行。
示例数据
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+
答案 0 :(得分:1)
^\S+_\K[a-z]+
如果您的正则表达式中没有\K
,则可以使用以下代码。这会将您要查找的内容捕获到第一个捕获组中。
^\S+_([a-z]+)
^
在行开头处断言位置\S+
匹配任何非空白字符一次或多次_
字面匹配下划线字符_
\K
重置报告的匹配的起点。最终匹配中不再包含任何以前消费的字符[a-z]+
匹配集a-z
中的一个或多个字符(小写ASCII字母字符) 注意:修饰符gmi
用于使正则表达式全局,多行和不区分大小写(将大写ASCII字母字符与[a-z]
匹配)