我正在开发一个需要匹配输出中某些字符串的项目..
这里是样本:
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部分”作为另一个输入。
答案 0 :(得分:1)
像这样的多部分词:
((\S+\s)+)
表示一个或多个单词,用一个空格分隔。 所以正则表达式应该是:
^((\S+\s)+)\s+(\S+)\s+((\S+\s)+)\s+(.*)$