2015-10-20 97 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+:|$)) 
相關問題