目前正在处理c#中的字符串。
示例:
07.02.2011 17:24:17 [/sbc_DIG] [ERROR] CommandExecutionService:290 - Error during command execution
我无法使用空格分割,因为在某些情况下,squarebracet中会有空格
在这种情况下,我希望使用正则表达式获取07.02.2011
,17:24:17
和CommandExecutionService:290
提前致谢
找到解决方案
非常感谢Daniel DiPaolo,ikegami
Ikegami你以前的解决方案确实对我有所帮助,并且只需要进行小修改。谢谢你
解决方案
@"^(?[0-9.]+) (?[0-9:]+) [.?] [.?] (?[a-zA-Z0-9:]+)\s";
谢谢你们。
答案 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;