首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用同一行中的其他文本替换文本

用同一行中的其他文本替换文本
EN

Stack Overflow用户
提问于 2010-03-25 16:58:52
回答 5查看 227关注 0票数 0

我不知道是否可以使用正则表达式,但我想替换此xml中的某些内容:

代码语言:javascript
复制
<custom-attribute name="Attribute_1" dt:dt="string">Danny Boyle</custom-attribute>
<custom-attribute name="DVD-releasedatum" dt:dt="string">06/10/1999</custom-attribute>

应该变成

代码语言:javascript
复制
<Attribute_1>Danny Boyle</Attribute_1>
<DVD-releasedatum>06/10/1999</DVD-releasedatum>

从第一个标记中删除它并不难,但如何关闭新形成的标记?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-03-25 17:08:12

例如,使用gvim,可以做到这一点:

代码语言:javascript
复制
:%s/.*name="\([^"]*\)"[^>]*>\([^<]*\)<.*/<\1>\2<\/\1>/cg

这是匹配的部分:

代码语言:javascript
复制
.*name="\([^"]*\)"[^>]*>\([^<]*\)<.*

这是替换部分:

代码语言:javascript
复制
<\1>\2<\/\1>
票数 1
EN

Stack Overflow用户

发布于 2010-03-25 17:23:20

这看起来像是XSLT的工作:

代码语言:javascript
复制
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="custom-attribute">
        <xsl:element name="{@name}">
            <xsl:apply-templates/>
        </xsl:element>
    </xsl:template>
</xsl:stylesheet>

这将为您提供所需的输出,并且对于将来的修改和扩展非常灵活。

票数 2
EN

Stack Overflow用户

发布于 2010-03-25 17:05:29

如果您想这样做一次,Regex替换可以是一个选项。除此之外,还有更好的方法来转换XML,例如XSLT

对于使用正则表达式,您可以替换

代码语言:javascript
复制
\<custom-attribute.*?name="(\w+)".*?\>(.*?)\</custom-attribute\>

使用

代码语言:javascript
复制
<$1>$2</$1>

将$1和$2替换为程序中调用的任何引用。先保存备份,不过=)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2514115

复制
相关文章

相似问题

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