Regex 正则表达式来匹配某些字符串

Regex 正则表达式来匹配某些字符串,regex,splunk,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

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

以下是示例:

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"
策略是识别字符串,然后忽略其后的空格。但是,这件事在操作名之前一直有效,因为它们可能是操作名之间的空格。
因此,我的问题是,如何使用regex让它识别操作名称中的字符串,就像我需要“插入用户”作为输入和“更改密码RSO部分”作为另一个输入一样。

是否使用以下多部分文字:

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

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

这是perl吗?无论您使用何种语言,最好在问题中添加适当的语言标记。您好,谢谢您的通知,这不是perl。。是一个名为splunk的应用程序中的配置文件。然而,我的问题是如何使用正则表达式来理解几个字符串(带空格)作为输入!!它起作用了。。但是,我对代码^([^\s]+)\s+([^\s]+)\s+((\s+\s)+)\s+(.*)$做了一些更改,因为我只需要1个空格作为操作名,其他的还是一样的。。无论如何,谢谢你的帮助。嗨@Sahand Mozaffari,很抱歉再次打扰你。在我尝试实现您的代码之后,我发现仍然有一点不匹配。请参考我的源数据以了解以下问题:)REGEX=^([^\s]+)\s++([^\s]+)\s++((\s++)\s++)(*)$FORMAT=userCode::“$1”时间戳::“$2”操作名称:“$3”其他:“$4”应用REGEX后,“其他”将--user和part识别为数据,并将I(空格..)TEST5作为数据读取。。你能在这方面帮助我吗?谢谢这是因为(\S+\S)现在是您的第四组。为了不让此括号算作另一个组,请执行以下操作:(?>\S+\S),这意味着此括号是非捕获括号,仅用于分组目的。您还可以使用命名的捕获组来澄清您的模式并防止此类错误。命名捕获组的语法是(?X),但请注意,并非所有类型的正则表达式都支持此语法,我不确定您的正则表达式是否支持此语法。检查一下。