正则表达式

时间:2016-10-06 05:17:49

标签: regex xml search replace geany

我有一个xml文件(称之为module.xml),如下所示在编辑器中打开,如Notepad ++ / Geany:

<?xml version="1.0"?>
<layout version="0.1.0">
    <default>
        <reference name="head">
            <action method="addItem"><type>skin_js</type><name>module/js/jquery.js</name></action>
            <action method="addItem"><type>skin_js</type><name>module/js/module-slider.js</name></action>
            <action method="addItem"><type>skin_css</type><name>module/module.css</name></action>
            <action method="addItem"><type>skin_js</type><name>module/js/module-video.js</name></action>
            <action method="addItem"><type>skin_js</type><name>module/js/nicEdit-latest.js</name></action>
        </reference>
        <reference name="left">
            <block type="module/subscribe" name="module.left.subscribe" template="module/left-sidebar.phtml" />
        </reference>
        <reference name="right">
            <block type="module/subscribe" name="module.right.subscribe" template="module/right-sidebar.phtml" before="-" />
        </reference>
        <reference name="top.links">
            <action method="addLink" translate="label title" module="module" ifconfig="module/settings/quicklinks">
                <label>Module Title</label>
                <url>module</url>
                <title>Module Title</title>
                <prepare>true</prepare>
                <urlParams/>
                <position>99</position>
            </action>
        </reference>
        <reference name="footer_links">
            <action method="addLink" translate="label title" module="module" ifconfig="module/settings/quicklinks">
                <label>Module Title</label>
                <url>module</url>
                <title>Module Title</title>
                <prepare>true</prepare>
                <urlParams/>
                <position>99</position>
            </action>
        </reference>
    </default>
    <module_index_index>
        <reference name="content">
            <block type="module/list" name="module_list" template="module/list.phtml" />
        </reference>
    </module_index_index>
    <module_create_index>
        <reference name="content">
            <block type="module/list" name="module.create">
                <action method="setTemplate"><template>module/create.phtml</template></action>
            </block>
        </reference>
    </module_create_index>
</layout>

现在我想仅在module/仅包含mycompany/module/个文件名的标记和属性中将.phtml替换为template,即<template>属性和ID Comp RYear Category Amount 1 1st Comp 2012 Elect 30000 2 1st Comp 2012 Compu 76000 3 1st Comp 2013 Elect 35000 4 2nd Comp 2012 Elect 50000 5 2nd Comp 2012 Comp 100000 6 2nd Comp 2012 Maint 18000 的内容标签

如何使用正则表达式执行此操作?在正则表达式中选择性查找/替换时,我没有想法。

1 个答案:

答案 0 :(得分:1)

请注意,这适用于格式正确的xml文件。

您可以使用正则表达式(?=.*\.phtml)module\/并替换为mycompany/module/

此:

(?=.*\.phtml)

是一个积极的先行:它将确保正则表达式在行中匹配。 module\/是要用/上的转义替换的字符串。

另外,您应该阅读此well known answer about parsing with regex.