正则表达式“无论什么都没有”匹配

时间:2015-05-07 08:46:33

标签: regex pcre splunk

我正在尝试构建一个正则表达式,它将从下面的两个文件中捕获TEXT*

/A/B/C/D/TEXT1/TEXT2.TEXT3.log
/A/B/C/D/TEXT1/TEXT2.trc

我出来了

/A/B/C/D/([^\/]+)/([^\/]+)?(?:\.)?([^\/]+)\.(log|trc)

它没有像我期望的那样起作用。

基本上,我需要从两个示例中捕获所有TEXT1TEXT2TEXT3字段(如果存在)以供进一步使用;如果不是,就像第二行一样,只有TEXT1TEXT2

2 个答案:

答案 0 :(得分:0)

如何使用行尾锚点?

/\/([^\/]\/[^\/]?)\.(log|trc)$/

答案 1 :(得分:0)

您可以使用此正则表达式:

\/A\/B\/C\/D\/([^\/]+)\/(\w+)?(?:\.(\w+))?\.(?:log|trc)

如果您有其他字符而不仅仅是字母,数字或下划线(由\w捕获),您可以限制为[^.]+

\/A\/B\/C\/D\/([^\/]+)\/([^.]+)?(?:\.([^.]+))?\.(?:log|trc)

请参阅Demo 1 Demo 2