-2

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

这里是样本:

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 部分”作为另一个输入。

4

1 回答 1

1

做这样的多部分词:

((\S+\s)+)

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

^((\S+\s)+)\s+(\S+)\s+((\S+\s)+)\s+(.*)$
于 2012-06-05T02:21:19.590 回答