我试图从输出文本行的日志文件中提取数字,如下所示:
1/11/2016 3:26:12 AM 1/11/2016 3:27:00 AM 45.6 A
该行的输出为45.6 A
然而,我的正则表达式代码从凌晨3:26:12返回12 A.我需要它完全忽略时间数,只输出45.6 A.
这是我的正则表达式代码:
$regex = '\d+(?:\.\d+)?(?=\s+A)'
答案 0 :(得分:2)
你只是忘了将lookeahead固定在字符串的末尾:
\d+(?:\.\d+)?(?=\s+A$)
^
请参阅regex demo
\d+(?:\.\d+)?
将匹配一个或多个数字,可选地后跟一个.
后跟一个或多个数字(浮点值),(?=\s+A$)
前瞻将需要一个或多个空格字符串末尾的A
字符出现在浮点值之后。
$s = '1/11/2016 3:26:12 AM 1/11/2016 3:27:00 AM 45.6 A'
$rx = '\d+(?:\.\d+)?(?=\s+A$)'
$result = [regex]::Match($s, $rx, 'RightToLeft')
if ($result) { $result.Value; }
答案 1 :(得分:1)
答案 2 :(得分:0)