2011-04-26 17 views
0

當前正在使用c#中的字符串。正則表達式

例子:

07.02.2011 17:24:17 [/sbc_DIG] [ERROR] CommandExecutionService:290 - Error during command execution 

我不能分割使用的空間在somecase會有內部squarebracet

空間在這種情況下,IAM興趣獲得07.02.201117:24:17CommandExecutionService:290使用正則表達式

感謝提前

fo UND出解決方案

非常感謝丹尼爾戴保羅,池上

池上以前的解決方案真的幫了我和它小的修改只需要工作。感謝的人

解決方案

@"^(?[0-9.]+) (?[0-9:]+) [.?] [.?] (?[a-zA-Z0-9:]+)\s"; 

感謝你們。

回答

0

使用Perl語法,但正則表達式應該是在C#中相同,

my ($date, $time, $pos) = $line =~/
^
    (\S+) \s+ 
    (\S+) \s+ 
    \[ [^\]]* \] \s+ 
    \[ [^\]]* \] \s+ 
    (\S+) 
/x; 
+0

你以前的解決方案確實有幫助..我研究了它並修改了..謝謝了很多 – pjm 2011-04-26 22:28:29

+0

歡迎,@pjm。如果您對所擁有的產品滿意,請接受答案。 – ikegami 2011-04-26 22:36:57

+0

再次感謝兄弟。保存了我的一天 – pjm 2011-04-26 22:37:09

2

爲什麼不只是分割前四個字段的空格,然後取最後一個字段的第一個字?

它看起來像你的數據是真的結構類似:

<date>(space)<time>(space)<URL?>(space)<severity/log level>(space)<message> 

所以只是把它分成這些組件由分裂的空間:

string[] fields = myString.split(" ", 4); 
+0

有時候會有方形空間中的空隙 實施例 2011年7月2日17點24分十七秒[/ sbc_DIG] [ERROR] CommandExecutionService:290 - 試驗 所以我不能分割用空格爲u可以看到有內部squarebracet – pjm 2011-04-26 21:43:32

+0

空間我懷疑使用方括號是在方括號中可能出現空格的結果。 – ikegami 2011-04-26 22:17:11