【问题标题】:Notepad++: Copy text portion value and replace other text portion with this valueNotepad++:复制文本部分值并用该值替换其他文本部分
【发布时间】:2015-12-16 06:13:57
【问题描述】:

如果您只想查看问题并提供快速解决方案,请跳过第一段,第一段只是我试图解决这个问题的背景。

在 NP++ 中使用 RegEx 已经有一段时间了,但我无法完全理解的一件事是如何使用它来存储和利用“变量”。我一直试图理解它一段时间,这不是我第一次遇到这个问题,但在此之前,我总是最终放弃并采取某种解决方法来避免使用这些事物。通过变量,我的意思是人们可以使用诸如 \1 \2 之类的东西来存储和替换值的方式。我一直在阅读许多 SO 线程,但我似乎无法理解。所以我希望有人能给我一个解决这个问题的方法,并解释一下 RegEx 正在做什么/它是如何运作的,这样我就可以解决这个问题,也许最终可以全面使用这些东西。

所以我有一个文件,特别是我的 iTunes 库 XML 文件,我想用另一个字段的值替换一个字段的值。例如,我有:

        <key>Play Date UTC</key><date>2040-02-05T21:28:16Z</date>
        <key>Release Date</key><date>2015-08-22T17:08:10Z</date>

我想拥有:

        <key>Play Date UTC</key><date>2015-08-22T17:08:10Z</date>
        <key>Release Date</key><date>2015-08-22T17:08:10Z</date>

即通过文件将多个项目的“Play Date UTC”的值替换为“Release Date”的值。

我认为这样做的方法是,在 pseduo-RegEx 中,类似于:

搜索:

[Variable 1=]<key>Play Date UTC</key><date>[/Variable 1]
[Variable 2=]{Wildcard}[/Variable 2]
[Variable 3=]</date>{newline}<key>Release Date</key><date>[/Variable 3]
[Variable 4=]2015-08-22T17:08:10Z[/Variable 4]
[Variable 5=]</date>[/Variable 5]

替换:

[Variable 1][Variable 4][Variable 3][Variable 4][Variable 5]

如果这有意义的话。

任何帮助将不胜感激。

【问题讨论】:

  • 为什么不复制要替换的值,而只为要替换值的模式编写正则表达式?比如:match : (&lt;key&gt;Release Date&lt;\/key&gt;&lt;date&gt;)[^&lt;](&lt;\/date&gt;) and replace with : $12015-08-22T17:08:10Z$2

标签: regex variables search replace notepad++


【解决方案1】:

我愿意:

查找内容:(&lt;key&gt;Play Date UTC&lt;/key&gt;&lt;date&gt;)[^&lt;]+(&lt;/date&gt;\s+&lt;key&gt;Release Date&lt;/key&gt;&lt;date&gt;([^&gt;]+)&lt;/date&gt;)
替换为:$1$3$2

说明:

(                                   : begin group 1
  <key>Play Date UTC</key><date>    : literally
)                                   : end group 2
[^<]+                               : every thing that is not <
(                                   : begin group 2
  </date>                           : literally
  \s+                               : 1 or more space char (including linebreak)
  <key>Release Date</key><date>     : literally
  ([^>]+)                           : group 3, every thing that is not < (ie the date)
  </date>                           : literally
)                                   : end group 2

【讨论】:

    猜你喜欢
    • 2020-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-06
    • 1970-01-01
    • 1970-01-01
    • 2021-10-04
    相关资源
    最近更新 更多