正则表达式

时间:2011-04-26 21:38:55

标签: c# regex

目前正在处理c#中的字符串。

示例:

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

我无法使用空格分割,因为在某些情况下,squarebracet中会有空格

在这种情况下,我希望使用正则表达式获取07.02.201117:24:17CommandExecutionService:290

提前致谢

找到解决方案

非常感谢Daniel DiPaolo,ikegami

Ikegami你以前的解决方案确实对我有所帮助,并且只需要进行小修改。谢谢你

解决方案

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

2 个答案:

答案 0 :(得分:2)

为什么不拆分前四个字段的空格然后取最后一个字段的第一个字?

看起来您的数据结构如下:

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

所以只需通过拆分空格将它分成这些组件:

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

答案 1 :(得分:0)

使用Perl语法,但正则表达式模式应该在C#中相同,

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