【问题标题】:A regex with SplunkSplunk 的正则表达式
【发布时间】:2013-09-30 10:18:28
【问题描述】:

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

我得到了一些这样的行:

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

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

【问题讨论】:

    标签: regex splunk


    【解决方案1】:

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

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

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

    regex101 demo

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

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

    【讨论】:

    • 因为我忘记了其他情况,并且每次执行正则表达式时只使用一行:SomeText#(?:(.*?BACKUP))?(?P( ?(1)[^]*|.*)) 但还是不行..
    • 对不起,杰瑞在测试后仍然无法工作。还在继续
    • 是的,我有一个特殊情况。这个对我有用: \#(?P.*?[^E]BACKUP\s)?(?Pf:\\\\Mailbox\\\)?(?P(?(G)(?(G2)[^\]|\S)*|.*)) 但很难编辑我的帖子,所以我会用你的回答来解决这个问题写的。
    • @timmalos 哦,好吧,没关系。如果您不介意,我会将其放在我的答案中以使其更具可读性。
    【解决方案2】:

    这可以与单个正则表达式匹配,但我对splunk 一无所知。也许这会有所帮助:

    ("?[A-Z]:\\\\(?:".+|\S+)?)
    

    现场演示here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多