簡體   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