Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Windows工具中使用正则表达式在XML文件中查找内容?_Xml - Fatal编程技术网

如何在Windows工具中使用正则表达式在XML文件中查找内容?

如何在Windows工具中使用正则表达式在XML文件中查找内容?,xml,Xml,我有一个很大的XML文件(~20 MB),其中包含以下行: <BUR value="0.01" /> 现在我想找到所有值大于0.33的行。如何在Windows中执行此操作?我不知道特定于Windows的答案,但您可以使用 Perl的XML:Xpath库比使用正则表达式更好更简单: $ xpath blurtst.xml '//BLUR[@value > "0.33"]' Found 4 nodes: -- NODE -- <BLUR value="0.40" /&

我有一个很大的XML文件(~20 MB),其中包含以下行:

<BUR value="0.01" />


现在我想找到所有值大于0.33的行。如何在Windows中执行此操作?

我不知道特定于Windows的答案,但您可以使用 Perl的XML:Xpath库比使用正则表达式更好更简单:

$ xpath blurtst.xml  '//BLUR[@value > "0.33"]'
Found 4 nodes:
-- NODE --
<BLUR value="0.40" />-- NODE --
<BLUR value="0.50" />-- NODE --
<BLUR value="0.34" />-- NODE --
<BLUR value="0.35" />
$xpath blurtst.xml'//BLUR[@value>“0.33”]
找到4个节点:
--节点--
--节点--
--节点--
--节点--

Hm。匹配的数字范围不是正则表达式的强项

适用于任意精度浮点(指数表示法除外)的正则表达式可能如下所示:

<BUR value="0*(?:[1-9]\d*\.\d*|0\.[4-9]\d*|0\.3[4-9]\d*|0\.33(?!0+")\d+)" />
$regex = [regex] '(?m)^.*<BUR value="0*(?:[1-9]\d*\.\d*|0\.[4-9]\d*|0\.3[4-9]\d*|0\.33(?!0+")\d+)" />.*$'
$matchdetails = $regex.Match($subject)
while ($matchdetails.Success) {
    # matched text: $matchdetails.Value
    $matchdetails = $matchdetails.NextMatch()
} 
*$”
$matchdetails=$regex.Match($subject)
而($matchdetails.Success){
#匹配文本:$matchdetails.Value
$matchdetails=$matchdetails.NextMatch()
} 

您是否安装了脚本语言?Python、Perl、Ruby。。。?哪个版本的Windows(可能自带PowerShell…)@Tim Pietzcker未安装脚本语言和Windows Vista