正则表达式匹配一些字符串

时间:2012-06-05 02:12:42

标签: regex splunk

我正在开发一个需要匹配输出中某些字符串的项目..

这里是样本:

user code   timestamp                   Action Name                 S#TPLC Field Name  User code group profile              
SNGLASK     2012-05-30-20.33.53.003000  Insert User                 I                  TEST5       DISPLAY
SNGLASK     2012-05-23-22.06.44.422000  Change Password RSO part    U     LERAPR      SNGCHIS     FULL_AUTH
SNGLASK     2012-05-30-20.34.39.066000  Insert User Group Profil    I                             *NONE

基本上我有一个应用程序,需要了解空格后的每一行都属于下一列。 然后,在动作名称后,一切都可以被视为其他。 因此,我已经出现了如下所示的正则表达式格式:

REGEX = ^([^\s]+)\s+([^\s]+)\s+([^\s]+)s(.*)$
FORMAT = userCode::"$1" TimeStamp::"$2" ActionName::"$3" Others::"$4"

策略是识别字符串然后忽略空格。但是,这个东西直到动作名称才起作用,因为它们可能是动作名称之间的空格。 因此,我的问题是,如何使用正则表达式让它识别动作名称中的字符串,就像我需要“插入用户”作为输入& “更改密码RSO部分”作为另一个输入。

1 个答案:

答案 0 :(得分:1)

像这样的多部分词:

((\S+\s)+)

表示一个或多个单词,用一个空格分隔。 所以正则表达式应该是:

^((\S+\s)+)\s+(\S+)\s+((\S+\s)+)\s+(.*)$