我正在使用TextWrangler从XML中获取特定的信息。我需要找到存在的文件名的列表,并只打印出这些文件名。
下面是一个代码示例:
<file id="file_1045280">
<name>SKY_A026C032_150707_R4RO.mov</name>
<pathurl>file://localhost/M:/FPL_MEDIA/04_MEZZANINE/SKY/SKY-EP03/SKY-0312_20150707_AA_A026/SKY_A026C032_150707_R4RO.mov</pathurl>
<duration>1796</duration>
<timecode>
<rate>
<ntsc>false</ntsc>
<timebase>25</timebase>
</rate>
<frame>0</frame>
<displayformat>NDF</displayformat>
</timecode>
<media>
<video>
<duration>1796</duration>
<samplecharacteristics>
<width>1920</width>
<height>1080</height>
</samplecharacteristics>
</video>
</media>
</file>
<sourcetrack>
<mediatype>video</mediatype>
</sourcetrack>
<link>
<linkclipref>clipItem_1045280</linkclipref>
<mediatype>video</mediatype>
<trackindex>1</trackindex>
</link>
</clipitem>
<enabled>TRUE</enabled>
<locked>FALSE</locked>
</track>
</video>
</media>
</clip>
<clip id="clip_1045282">
<name>SKY_A026C018_150707_R4RO</name>
<duration>958</duration>
<rate>
<ntsc>false</ntsc>
<timebase>25</timebase>
</rate>
<in>-1</in>
<out>-1</out>
<masterclipid>clip_1045282</masterclipid>
<ismasterclip>TRUE</ismasterclip>
<media>
<video>
<track>
<clipitem id="clipitem_1045282">
<name>SKY_A026C018_150707_R4RO</name>
<duration>958</duration>
<masterclipid>clip_1045282</masterclipid>
<rate>
<ntsc>false</ntsc>
<timebase>25</timebase>
</rate>
<in>0</in>
<out>958</out>
<start>0</start>
<end>958</end>
<file id="file_1045282">
<name>SKY_A026C018_150707_R4RO.mov</name>
<pathurl>file://localhost/M:/FPL_MEDIA/04_MEZZANINE/SKY/SKY-EP03/SKY-0312_20150707_AA_A026/SKY_A026C018_150707_R4RO.mov</pathurl>
<duration>958</duration>
<timecode>
<rate>
<ntsc>false</ntsc>
<timebase>25</timebase>
</rate>
<frame>0</frame>
<displayformat>NDF</displayformat>
</timecode>
<media>
<video>
<duration>958</duration>
<samplecharacteristics>
<width>1920</width>
<height>1080</height>
</samplecharacteristics>
</video>
</media>
</file>
<sourcetrack>
<mediatype>video</mediatype>
</sourcetrack>
<link>
<linkclipref>clipItem_1045282</linkclipref>
<mediatype>video</mediatype>
<trackindex>1</trackindex>
</link>
</clipitem>
<enabled>TRUE</enabled>
<locked>FALSE</locked>
</track>
</video>
</media>
</clip>
<clip id="clip_1045283">
<name>SKY_A026C033_150707_R4RO</name>
<duration>1202</duration>
<rate>
<ntsc>false</ntsc>
<timebase>25</timebase>
</rate>
<in>-1</in>
<out>-1</out>
<masterclipid>clip_1045283</masterclipid>
<ismasterclip>TRUE</ismasterclip>
<media>
<video>
<track>
<clipitem id="clipitem_1045283">
<name>SKY_A026C033_150707_R4RO</name>
<duration>1202</duration>
<masterclipid>clip_1045283</masterclipid>
<rate>
<ntsc>false</ntsc>
<timebase>25</timebase>
</rate>
<in>0</in>
<out>1202</out>
<start>0</start>
<end>1202</end>目前,我使用以下Grep:
.*?(\<name\>)(.*)(.mov).*这会设法找到我需要的字符串。但是,我需要将所有剩余的文本替换为空,也就是说,我只剩下一个文件名列表。
有没有人能建议我该怎么做呢?
提前谢谢你,马特
发布于 2017-04-13 04:33:40
使用TextWrangler时,一种快捷的方法是首先使用-> Text -> Process Lines Containing...搜索<name>.+\.mov</name>,同时选中Grep和Copy to -> document。
可以清理生成的文件,搜索^\s*<name>(.+\.mov)</name>\s*$并替换为\1,同时选中Grep。
发布于 2015-10-15 04:04:58
这个怎么样。有一些重叠,但这意味着
"match everything as if it's a single line that
[comes after </name> and before <name>], or
[is between the beginning and <name>] or
[is the <name> or </name> tags itself].
(?ms)(?<=<\/name>)(.*?)(?=<name>)|(^.*?<name>)|(<.?name>)
https://regex101.com/r/vV4xZ6/2https://stackoverflow.com/questions/33134099
复制相似问题