RegEx值为0.1到100.00

时间:2015-10-20 15:26:03

标签: regex

查看由HitManPro创建的xml文件,我可以看到很多像这样的条目;

[Item type="Malware" malwareName="Trojan" score="0.0" status="None"]

这是误报。

我想将脚本(LabTech)中使用的现有RegEX查询替换为可以查找类似内容的查询;

score="5.1" up to score="999.0"

我是Reg Ex查询的新手,我在搜索字符串score=" "中的数字时遇到问题。

非常感谢任何帮助。以下是来自hitmanPro的示例XML

的问候, 奥斯卡罗梅罗

<br>
HitmanPro Scan Completed Successfully.
Threats Found!
<hr>
Scan Date: 2015-10-17T15:16:31<BR>

<p>"
[Log computer="computer name" windows="6.1.1.7601.X64/12" scan="Normal" version="3.7.9.246" date="2015-10-17T15:16:31" timeSpentInSecs="125" filesProcessed="15922"]
    [Item type="Malware" malwareName="Malware" score="90.0" status="None"]
        [Scanners]
            [Scanner id="Bitdefender" name="Gen:Variant.Kazy.751212" /]
        [/Scanners]
        [File path="C:\Program Files (x86)\ESET\ESET Remote Administrator\Server\era.exe" hash="F7BB46D48B994539AFD400641CE8E4F85114FC7BA05A1BAA0D092F3A92817F13" /]
        [Startup]
            [Key path="HKLM\SYSTEM\CurrentControlSet\Services\ERA_SERVER\" /]    
        [/Startup]
    [/Item]
[/Log]
"</p>

2 个答案:

答案 0 :(得分:0)

我对LabTech不知道。

无论如何,您可以使用正则表达式查询:

\sscore="((?:5\.[1-9])|(?:[6-9]\.[0-9])|(?:[1-9]{1}[0-9]{1,2}\.[0-9]))"\s

\sscore="(5\.[1-9]|[6-9]\.[0-9]|[1-9]{1}[0-9]{1,2}\.[0-9])"\s

如果您不喜欢(?:...)

更新: 好的,我做了进一步的修改以支持最低5.1,最高999.9

PS:这是我在StackOverflow上的第一个答案

答案 1 :(得分:0)

必须有比这更短的版本,但这应该有效。

score="(0\.[1-9]|[1-9]\.[0-9]|[1-9][0-9]\.[0-9]|[1-9][0-9][0-9]\.[0-9])"

匹配

0.1
1.0
10.4
100.9
100.0
999.9
99.9
9.9
(etc.)

不匹配

0.0
0
(etc.)

是正则表达式吗?

至于正则表达式是否适合这项工作,我可能同意@Makoto它不是 - 除非您作为一个FYI快速扫描结果,而不是过滤结果作为更大工具或应用程序的一部分。换句话说,除了最简单的情况,我同意@Makoto你想要一些xml解析工具。