regex - 从日志文件中提取号码

标签 regex parsing powershell

我正在尝试从日志文件中提取一个数字,该文件输出这样的文本行:

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; }

enter image description here

关于regex - 从日志文件中提取号码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35501792/

相关文章:

batch-file - Powershell获取目录中文件和文件夹的数量

powershell - 调用自定义类的静态方法

javascript - 在javascript中,我们可以使用正则表达式将字符串与循环部分匹配,但不要拆分它

regex - Flex 中的非贪婪正则表达式匹配

Objective-C 实现指针

javascript - 使用数组内容进行 Json 解码

javascript - 查找倒数范围的函数式方法

regex - gsub 每隔一个条件出现

java - DateFormat 解析中面临的问题

Powershell 根据参数在文件中搜索字符串