无法 select 正确的数据
Not able to select the right data
我得到了一份不会改变的遗产xml。
在格式化的方式下,它看起来像这样:
<Result>
<StepSequence>
<RealMeasure>
<Text value="Batman"/>
</RealMeasure>
</StepSequence>
<StepSequence>
<RealMeasure>
<Text value="Superman"/>
</RealMeasure>
</StepSequence>
</Result>
其实是这样的:
<Result><StepSequence><RealMeasure><Text value="Batman"/></RealMeasure></StepSequence><StepSequence><RealMeasure><Text value="Superman"/></RealMeasure></StepSequence></Result>
我想出的正则表达式是:
<RealMeasure><((\w*)\s+value="(.*)".*?)></RealMeasure>
但它正在 select 发送数据:
<RealMeasure><Text value="Batman"/></RealMeasure></StepSequence><StepSequence><RealMeasure><Text value="Superman"/></RealMeasure>
我想select:
<RealMeasure><Text value="Batman"/></RealMeasure>
和
<RealMeasure><Text value="Superman"/></RealMeasure>
我想要分组,以便稍后可以将匹配转换为类似以下内容:
<RealMeasure type="Text" value="Superman"/>
使用如下模式:
<RealMeasure type="" value=>
有什么改进我的正则表达式的技巧吗?
试试这个 -
let reg = /<RealMeasure><((\w+)\s+value="(.*?)".*?)><\/RealMeasure>/g;
let str= `<Result><StepSequence><RealMeasure><Text value="Batman"/></RealMeasure></StepSequence><StepSequence><RealMeasure><Text value="Superman"/></RealMeasure></StepSequence></Result>`;
str.replace(reg, `<RealMeasure type="" value=""/>`); //<Result><StepSequence><RealMeasure type="Text" value="Batman"/></StepSequence><StepSequence><RealMeasure type="Text" value="Superman"/></StepSequence></Result>
组 value="(.*?)"
也必须是非贪婪的。并将 (\w*)
更改为 (\w+)
以确保类型不为空。
此外,</RealMeasure>
中的 /
必须像 <\/RealMeasure>
一样转义。
我使用了以下正则表达式:
<RealMeasure><(\w+).*?("[^"]*").*?<\/RealMeasure>
它似乎正在做你想要的。
测试here。页面右侧有详细的解释。
请注意,您使用的软件可能会对您可以使用的正则表达式功能施加一些限制。
或者,使用适当的XML解析器提取数据并重新格式化。
我得到了一份不会改变的遗产xml。 在格式化的方式下,它看起来像这样:
<Result>
<StepSequence>
<RealMeasure>
<Text value="Batman"/>
</RealMeasure>
</StepSequence>
<StepSequence>
<RealMeasure>
<Text value="Superman"/>
</RealMeasure>
</StepSequence>
</Result>
其实是这样的:
<Result><StepSequence><RealMeasure><Text value="Batman"/></RealMeasure></StepSequence><StepSequence><RealMeasure><Text value="Superman"/></RealMeasure></StepSequence></Result>
我想出的正则表达式是:
<RealMeasure><((\w*)\s+value="(.*)".*?)></RealMeasure>
但它正在 select 发送数据:
<RealMeasure><Text value="Batman"/></RealMeasure></StepSequence><StepSequence><RealMeasure><Text value="Superman"/></RealMeasure>
我想select:
<RealMeasure><Text value="Batman"/></RealMeasure>
和
<RealMeasure><Text value="Superman"/></RealMeasure>
我想要分组,以便稍后可以将匹配转换为类似以下内容:
<RealMeasure type="Text" value="Superman"/>
使用如下模式:
<RealMeasure type="" value=>
有什么改进我的正则表达式的技巧吗?
试试这个 -
let reg = /<RealMeasure><((\w+)\s+value="(.*?)".*?)><\/RealMeasure>/g;
let str= `<Result><StepSequence><RealMeasure><Text value="Batman"/></RealMeasure></StepSequence><StepSequence><RealMeasure><Text value="Superman"/></RealMeasure></StepSequence></Result>`;
str.replace(reg, `<RealMeasure type="" value=""/>`); //<Result><StepSequence><RealMeasure type="Text" value="Batman"/></StepSequence><StepSequence><RealMeasure type="Text" value="Superman"/></StepSequence></Result>
组 value="(.*?)"
也必须是非贪婪的。并将 (\w*)
更改为 (\w+)
以确保类型不为空。
此外,</RealMeasure>
中的 /
必须像 <\/RealMeasure>
一样转义。
我使用了以下正则表达式:
<RealMeasure><(\w+).*?("[^"]*").*?<\/RealMeasure>
它似乎正在做你想要的。
测试here。页面右侧有详细的解释。
请注意,您使用的软件可能会对您可以使用的正则表达式功能施加一些限制。
或者,使用适当的XML解析器提取数据并重新格式化。