regex - Splunk 的正则表达式

标签 regex splunk

我的正则表达式遇到一些问题。

我有一些像这样的行:

SomeText#"C:\\","Shadow Copy Components:\\","E:\\",""
SomeText#"D:\\"
SomeText#"E:\\","Shadow Copy Components:\\"
SomeText#"SET SNAP_ID=serv.a.x.com_1380312019","BACKUP H:\\ USING \\\\?\\GLOBALROOT\\Device\\HarddiskVolumeShadowCopy47\\ OPTIONS:ALT_PATH_PREFIX=c:\\VERITAS\\NetBackup\\temp\\_vrts_frzn_img_3200\"
SomeText#"SET SNAP_ID=serv.a.x.com_1380312019","BACKUP Y:\\Libs USING \\\\?\\GLOBALROOT\\Device\\HarddiskVolumeShadowCopy47\\ OPTIONS:ALT_PATH_PREFIX=c:\\VERITAS\\NetBackup\\temp\\_vrts_frzn_img_3200\"

我想要的是获得一个名为 jobFileList 的组,其中每行包含:

"C:\\","Shadow Copy Components:\\","E:\\",""
"D:\\"
"E:\\","Shadow Copy Components:\\"
H:\\
Y:\\Libs

你可以看到我只想要文件列表,但有时它只是 # 标记后的全文,有时有很多 ** 我需要删除。 事实上,我无法在这种情况下使用脚本,因此我只需要使用一个正则表达式来完成此操作,不能只在正则表达式之后进行其他内容的替换。

我所做的是:

SomeText(#.*BACKUP (?P<jobFileList>.*?) .*)?(#(?P<jobFileList>.*))?

但似乎我无法设置相同的 GroupName :( 如果我将第二个 jobFileList 替换为另一个名称,它可以正常工作,但不是我需要的。

感谢您的帮助,

编辑: 我还可以有一些像这样的行:

SomeText#/ahol5d72_1_2
SomeText#/p7ol4a1p_1_2
SomeText#Gvadag04SANDsk_Daily
SomeText#/bck_reco_a9ol5765_1_2_827497669

在所有这些情况下,我需要将所有文本放在 # 标记之后。

最佳答案

不依赖双反斜杠后的双引号的版本:

SomeText#(?:(.*?BACKUP) )?(?P<jobFileList>(?(1)[^ ]*|.*$))

This: (?(1)[^ ]*|.*$) 是 Python 2.7.5 支持的条件组(可能适用于更高版本,但我不知道对于以前的)。如果有 BACKUP,它会抓取所有非空格,如果没有 BACKUP,它会抓取所有内容,直到字符串末尾。

regex101 demo

编辑:根据评论,@timmalos 修改后有效的正则表达式:

\#(?P<G>.*?[^E]BACKUP\s)?(?P<G2>f:\\\\Mailbox\\\)?(?P<jobFileList>(?(G)(?(G2)[^\]|\S)‌​*|.*))

关于regex - Splunk 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19091684/

相关文章:

splunk - 如何格式化 splunk 图表以显示多行(每种方法一行)?

logging - 如何用splunk获取 "unique"请求的个数

android - 如何安装 Splunk Mint Gradle 插件?

java - 如何在splunk通⽤转发器上进行自己的加密和解密

python - 正则表达式python压缩字符串

php - 使用正则表达式分隔组中的字符串

regex - 使用正则表达式提取 OTP key

c# regex - 组和嵌套组

regex - 特定 VBA/VBScript 正则表达式相关问题 (MS Access)

archive - NLog 文件名中的日期和限制日志文件的数量