2015-10-20 83 views
1

我有以下字符串,我想分手了使用正则表达式:正则表达式 - 赛达在接下来各组比赛

Connect: Unable to open connection to server. HOST:(servernamex) SERVICE:(cnxadaB0) DATABASEINFO:(3 255 C:\DATABASENAME.DAT) ERROR:RemoteConnect: SocketError(10061) The CONNX Listener process (CNXRUN##_MAIN) is not running on the system.

正则表达式我已经想出了到现在为止如下:

(\s|^)([A-Z]\w\w+:(?!(\s[A-Z]\w\w+:))) 

当我运行的正则表达式我得到以下结果:

MATCH 1 
1. '' 
2. 'Connect:' 
MATCH 2 
1. ' ' 
2. 'HOST:' 
MATCH 3 
1. ' ' 
2. 'SERVICE:' 
MATCH 4 
1. ' ' 
2. 'DATABASEINFO:' 
MATCH 5 
1. ' ' 
2. 'ERROR:' 

我想用正则表达式来组数据,将其拆分为我如下:

MATCH 1 
1. '' 
2. 'Connect:' 
3. 'Unable to open connection to server.' 
MATCH 2 
1. ' ' 
2. 'HOST:' 
3. '(servernamex)' 
MATCH 3 
1. ' ' 
2. 'SERVICE:' 
3. '(cnxadaB0)' 
MATCH 4 
1. ' ' 
2. 'DATABASEINFO:' 
3. '(3 255 C:\DATABASENAME.DAT)' 
MATCH 5 
1. ' ' 
2. 'ERROR:' 
3. 'RemoteConnect: SocketError(10061) The CONNX Listener process (CNXRUN##_MAIN) is not running on the system. 

样品与我合作过: regex101 demo

回答

1

您可以使用此正则表达式:

(^|\s)([A-Z]\w+:)\s*(.*?(?=\s[A-Z]\w+:|$)) 

RegEx Demo

如果你想避免与空间或空字符串第一捕获组,然后使用向后断言:

(?<=^|\s)([A-Z]\w+:)\s*(.*?(?=\s[A-Z]\w+:|$))