【问题标题】:search / replace in notepad++ character limit在记事本++字符限制中搜索/替换
【发布时间】:2012-08-08 14:54:16
【问题描述】:

我有一个 xml 文件,在某些字段上需要有 60 个字符的限制。

例子

<Description>This is a long description that is really over 60 characters long and needs to be shortened</Description>

我需要修剪每一个出现的地方,所以它只有 60 个字符,所以上面的输出就是。

<Description>This is a long description that is really over 60 characters</Description>

使用记事本++,我将如何使用正则表达式进行搜索和替换?

我有多个文件需要对每个文件运行此操作,每个文件大约有 2000 行,并且该字段大约出现 10-15 次。

并非所有字段都超过 60 个字符,只是其中一些。

数据块示例

        <Product>
        <SuppliersProductCode>PF01215</SuppliersProductCode>
        <BuyersProductCode></BuyersProductCode>
        <GTIN>0</GTIN>
        <Description>This is a long description that is really over 60 characters long and needs to be shortened</Description>
        <Properties>
            <Quantity UOMCode="EA">
                <Packsize>1</Packsize>
                <Amount>1</Amount>
            </Quantity>
        </Properties>
    </Product>

谢谢

【问题讨论】:

  • 对使用正则表达式很新,所以没有尝试太多设法让 find ()(.*)() 位正确,但无法找出替换。跨度>

标签: regex notepad++ replace


【解决方案1】:

我认为正则表达式&lt;Description&gt;([^&lt;]{0,60})[^&lt;]*&lt;/Description&gt; 与您想要的匹配,假设描述从不包含“<Description>\R?([^<]{0,60})[^<]*</Description>。

在“替换”框中输入&lt;Description&gt;\1&lt;/Description&gt;\1 引用第一对括号之间的表达式匹配的内容。它被称为反向引用。 More info

【讨论】:

  • 编辑原始问题更清楚一点,这会删除 标签,但我需要保留它们,但只需编辑中间的文本,使其只有 60 个字符。谢谢
  • 我希望这会更好。告诉我。
  • 没有找到任何匹配项不是每个描述都超过 60 个字符,只是其中的一些。
  • 奇怪,我在notepad++中对你的样本数据进行了测试,它在这里工作。即使是少于 60 个字符的描述。你在notepad++中选择了“正则表达式”搜索模式吗?
猜你喜欢
  • 1970-01-01
  • 2015-06-27
  • 1970-01-01
  • 1970-01-01
  • 2017-01-10
  • 1970-01-01
  • 1970-01-01
  • 2023-02-02
  • 1970-01-01
相关资源
最近更新 更多