簡體   English   中英

Notepad ++用RegEx搜索結果替換文本

[英]Notepad++ replace text with RegEx search result

我想用正則表達式的結果替換另一個文件中的標准字符串。 標准文本如下所示:

<xsl:variable name="ServiceCode" select="###"/>

我想將###替換為服務代碼,稍后可以從該URL在同一文件中找到:

<a href="/Services/xyz" target="_self">

正則表達式(?<=\\/Services\\/)(.*)(?=\\" )返回所需的服務代碼” xyz“。

因此,我打開了Notepad ++,在“查找內容”中添加了“ ###”,在“替換為”部分中添加了此RegEx,並期望將###文本替換為xyz 但是我得到了這個結果:

<xsl:variable name="ServiceCode" select="?<=/Services/.*?=" "/>

我是RegEx的新手,在替換部分中是否需要使用與查找字符串不同的語法? 有人可以提示我如何達到所需的結果嗎? 目的是使大量具有相似結構的文件標准化,因為現在所有服務代碼都在文件中的多個位置進行了硬編碼。 謝謝。

你可以使用一個前瞻捕捉未來的一部分。

搜索:( (?s)###(?=.*/Services/([^"]+)")並替換為: $1

  • (?s)使點也與換行符匹配(np ++中還有一個復選框)
  • [^"]匹配的字符不是 "

替換$1對應於捕獲第一個帶括號的子模式。

我不是RegEx的專家,但我認為我可以提供幫助。 看來您可能會走錯路了。 您正在使用的正則表達式搜索通常會像這樣工作:

RegEx中的括號()允許您選擇搜索的一部分,並在替換部分中使用。

您將(?<=\\/Services\\/)(.*)(?=\\" )放入Notepad ++中的“查找內容”部分。

然后,在“替換為”部分中,可以使用\\1\\2\\3將搜索內容替換為(?<=\\/Services\\/)(.*)(?=\\" )分別搜索。

根據文件的結構,您需要使用RegEx搜索來選擇兩行代碼(以及所需的特定部分),然后使用\\1\\2\\3等的組合來完全替換所有內容是,除了###,您可以將其替換為與xyz關聯的\\number

有關更多信息,請參見http://docs.notepad-plus-plus.org/index.php/Regular_Expressions

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM