[英]Match string starting with THIS until THAT Regex
这是我的文件内容。
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>"
如何在正则表达式中翻译它?
这很简单,只要您没有在其他<x:xmpmeta>
元素内嵌套任何其他<x:xmpmeta>
元素:
<x:xmpmeta[\\w\\W]*?</x:xmpmeta>
既包含单词字符类又包含其否定字符类的字符集[\\w\\W]
是匹配所有内容(包括换行符)的简便方法。 如果您出于某种原因愿意,实际上可以将其替换为任何其他字符类以及其否定类,例如[\\s\\S]
。
?
在*
加上这样的正则表达式很重要,因为如果您在代码的后面有另一个<x:xmpmeta></x:xmpmeta>
块,则单个匹配将从第一个匹配开始,继续到结束<x:xmpmeta></x:xmpmeta>
标记,抓住它们之间的所有内容,并仅在</x:xmpmeta>
的最后一个实例处停止。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.