繁体   English   中英

用正则表达式替换 Notepad++ 中标签内的文本

[英]Regular Expression to replace text inside tags in Notepad++

蜂群思维!

我正在尝试使用 Notepad++ 编辑 Memsource *.mxliff 文件。
当我创建一个搜索任务时,源行和目标行混合在一个巨大的列表中。
但我只需要对<target>.../<target>标签内的行进行修改。

例如:

1. <target>от 15 до 35 °C</target>
2. <target>Допустимый диапазон температур воздуха от -40 °C до +70 °C {1&gt;1)&lt;1}</target>  

在这些行中,我需要用不间断的空格版本替换所有度数实例:

求: (\\d) °C
替换为: $1 $2

这样做的最佳方法是什么?
任何提示将不胜感激。 非常感谢!

  • Ctrl + H
  • 求什么: (?:<target>|\\G)(?:(?!target)[\\s\\S])*?\\K(\\d+)\\s*(°C)(?=.*</target>)
  • 替换为: $1&nbsp;$2
  • 检查火柴盒
  • 检查环绕
  • 检查正则表达式
  • 取消选中. matches newline . matches newline
  • 全部替换

解释:

(?:                         # non capture group
    <target>                # opening tag
  |                         # OR
    \G                      # restart from last match position
)                           # end group
(?:(?!target)[\s\S])*?      # 0 or more any character but not "target"
\K                          # forget all we have seen until this position
(\d+)                       # group 1, 1 or more digits
\s*                         # 0 or more spaces
(°C)                        # group 2
(?=.*</target>)             # must be followed by </target>

替代品:

$1              # content of group 1 (i.e. the temperature)
&nbsp;          # non breaking space
$2              # content of group 2 (i.e. °C)

屏幕截图(之前):

在此处输入图片说明

屏幕截图(之后):

在此处输入图片说明

假设我们在目标标签中有一个°C ,可能有一些类似于:

(<\s*target\s*>[\s\S]*?\d)\s+(°C[\s\S]*?<\s*\/target\s*>)

并替换为,

$1$2

可能可以研究一下。

正则表达式演示


如果你想简化/更新/探索表达式,它已在regex101.com 的右上角面板中进行了解释 如果您有兴趣,可以在此调试器链接中观看匹配步骤或修改它们。 调试器演示了 RegEx 引擎如何逐步使用一些示例输入字符串并执行匹配过程。


一如既往的简短替代....
找出什么: (\\d+) (?=°C)
全部替换为: $1NBSP
完毕!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM