所以我有几个 XML 文件,其中包含具有唯一 ID 的人,并且每个人都有自己喜欢的食物(一个人可以在多个 xml 文件中):
在某些情况下,id=300 的人可能会在标签的开头吃到食物。
<person id="299">
<food>
<type> Hot Dog </type>
</food>
</person>
<person id="300">
<food>
<type> Burger</type>
</food>
</person>
Run Code Online (Sandbox Code Playgroud)
或者在食物标签之前可能还有其他标签
<person id="300">
<year>
<birth> 1990 </birth>
<marriage> 2020 </marriage>
</year>
<food>
<type> Vegan </type>
</food>
</person>
Run Code Online (Sandbox Code Playgroud)
我需要使用单个 Perl RegEx 函数来删除 ID 为 300 的人的食物标签,如果它在人标签的开头、中间或结尾,则独立
我知道如果是整个人标签,我可以使用类似的东西:
$fileContents =~ s/<person id=\"300\"[^<]+<\/person>//g;
Run Code Online (Sandbox Code Playgroud)
但是我必须完整地保留人员标签,我只能移除人员标签内的食物标签,但我无法移除所有食物标签,因为我需要将其留给其他 ID 的人。
请问你能帮帮我吗??我一直在为这个 D 苦苦挣扎: