我正在尝试从日志文件中提取一个数字,该文件输出这样的文本行:
1/11/2016 3:26:12 AM 1/11/2016 3:27:00 AM 45.6 A
该线的输出为45.6 A
但是,我的Regex代码从凌晨3:26:12返回12A。我需要它完全忽略时间数字,而只输出45.6A。
这是我的Regex代码:
$regex = '\d+(?:\.\d+)?(?=\s+A)'
最佳答案
您只是忘了将lookheadhead anchor 定在字符串的末尾:
\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; }
关于regex - 从日志文件中提取号码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35501792/