首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用GREP替换除匹配字符串之外的所有字符串

使用GREP替换除匹配字符串之外的所有字符串
EN

Stack Overflow用户
提问于 2015-10-15 03:36:45
回答 2查看 167关注 0票数 0

我正在使用TextWrangler从XML中获取特定的信息。我需要找到存在的文件名的列表,并只打印出这些文件名。

下面是一个代码示例:

代码语言:javascript
运行
复制
<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:

代码语言:javascript
运行
复制
.*?(\<name\>)(.*)(.mov).*

这会设法找到我需要的字符串。但是,我需要将所有剩余的文本替换为空,也就是说,我只剩下一个文件名列表。

有没有人能建议我该怎么做呢?

提前谢谢你,马特

EN

回答 2

Stack Overflow用户

发布于 2017-04-13 04:33:40

使用TextWrangler时,一种快捷的方法是首先使用-> Text -> Process Lines Containing...搜索<name>.+\.mov</name>,同时选中GrepCopy to -> document。

可以清理生成的文件,搜索^\s*<name>(.+\.mov)</name>\s*$并替换为\1,同时选中Grep。

票数 0
EN

Stack Overflow用户

发布于 2015-10-15 04:04:58

这个怎么样。有一些重叠,但这意味着

代码语言:javascript
运行
复制
"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/2
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33134099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档