这是我的文件内容。
Whatever conent goes here
# --------------- POINT OF INTEREST BEGIN ------------------- #
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 5.1.2">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:exif="http://ns.adobe.com/exif/1.0/" xmp:ModifyDate="2014-03-06T12:39:48+05:00" exif:DateTimeOriginal="2014-03-05T18:26:01+05:00">
<dc:creator>
<rdf:Seq>
<rdf:li>Picasa</rdf:li>
</rdf:Seq>
</dc:creator>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
# --------------- POINT OF INTEREST ENDS ------------------- #
Whatever content goes here
这是我想要实现的目标。
我希望匹配<x:xmpmeta and
选择整个文件路径直到</x:xmpeta>
我很难以下面的形式翻译正则表达式。
"Start from <x:xmpmeta and whatever comes after that including \r\n untill </x:xmpmeta>"
我如何在Regex中翻译它?
答案 0 :(得分:1)
如果您没有嵌套在其他<x:xmpmeta>
元素中的任何其他<x:xmpmeta>
元素,这非常简单:
<x:xmpmeta[\w\W]*?</x:xmpmeta>
包含单词character class及其否定字符类的字符集[\w\W]
是匹配所有内容的简单方法,包括换行符。实际上,如果你想出于某种原因,你可以用任何其他字符类及其否定类替换它,例如[\s\S]
。
?
在*
之后具有正则表达式非常重要,因为如果您在代码中稍后有另一个<x:xmpmeta></x:xmpmeta>
块,则单个匹配将从第一个,继续通过结束标记,抓住中间的所有内容,并且只停留在</x:xmpmeta>
的最后一个实例。