Filename EOF
xxxxxxx 101 241434 12DEC2011 9:33 255,255 UUUU 14 42
xxxxxxx 101 114682 12DEC2013 11:49 220,0 UUUU 14 42
xxxxxxxx 101 200542 14DEC2011 14:43 255,255 UUUU 14 42
xxxxxxxx 101 200458 25JAN2012 15:28 220,0 NUUU 14 42
xxxxxxxx 101 8102 28JAN2015 15:17 227,12 NCCC 14 14
xxxxxx 101 114502 12DEC2013 11:49 220,0 UUUU 14 42
xxxxxxx 101 4622 23JAN2012 14:46 255,255 UUUU 14 42
xxxxxxxx 101 120 18APR2013 16:20 201,130 OOOO 14 28
xxxxxx 101 48298 03JAN2013 8:47 90,2 OOOO 14 14
xxxxx 101 200686 07DEC2011 15:59 255,255 UUUU 14 42
xxxxxxxx 101 3578 30JAN2014 18:14 255,255 UUUU 14 42
从输出中我只想匹配Filename和EOF文件名。我对\s\d+\s\d
感到厌倦,并且只能匹配EOF,但却找不到与EOF
匹配文件名的小问题
答案 0 :(得分:0)
您可以使用:
^([\w\.]+)\s+\d+\s+(\d+)
第1组将包含FileName,第2组将包含EOF
说明:
^
它是一个锚点,它告诉引擎这是该行的开始。
\w
匹配任何单词字符(字母数字和下划线)
\s
匹配任何空格字符(空格,制表符,换行符)
\d
匹配任何数字字符[0-9]
+
匹配前面一个或多个令牌
\.
与点匹配。字符
[...]
是一个字符集,匹配集合
(...)
它是一个捕获组,它将内部的内容分组以提取子字符串
因此,考虑到这一点,您可以看到模式正在做什么:
你应该告诉引擎它是行^
的开头,然后你想捕获第一组字母数字字符([\w\.]+)
,我假设文件名可能包含一个点。如果它可能包含其他字符,则应将此部分更改为([\w\.-]+)
或您可能需要匹配的任何字符。
然后我们告诉该字符串至少有一个空格,但可能有更多\s+
。然后你告诉它至少有一个数字,但可能有更多\d+
(因为你对此不感兴趣,你不把它放在捕获组中)然后更多whitespacing \s+
然后更多的数字,但是这些你有兴趣捕捉,所以你把它放在括号(\d+)
。
希望这有助于您更多地了解Regex,干杯!