簡體   English   中英

在Notepad ++中查找並替換為正則表達式

[英]Find and replace with regular expression in Notepad++

目前,我有一個PHP函數,該函數獲取CSV文件的內容並將其放入多維數組,該數組包含我使用索引在不同位置打印出的文本。

使用的示例是:

$localText[index][pageText][conceptQualityText][$lang];

第一個索引[index]將是頁面的名稱。 第二個索引[pageText]將指示它是什么(頁面的文本)。 第三個索引[conceptQualityText]指示實際的文本。 最后一個索引[$lang]獲取所需語言的文本。

所以:

->頁面位置

->那是什么

->內容

->應該以什么語言顯示。

所有這些在以前的PHP版本中都可以正常工作。 但是,升級到7.2后,PHP似乎更加嚴格。 大約2年前,當我第一次提出此解決方案時,我有點綠色,現在知道由於這些索引未定義為字符串,例如封裝在單引號中,例如: ['index'] ,它們適合a的表示法超全局(DEFINE)。 那時我並沒有考慮太多,但是現在PHP似乎將它們解釋為(超全局變量),因此我拋出了x字是未定義的超全局變量的錯誤。

我最初的想法是進行搜索並替換示例字符串:

$localText[index][pageText][conceptQualityText][$lang];

使用Notepad ++中的正則表達式功能。

但是,該示例只是眾多示例之一,數組索引的表示法基本上是:

$localText[index][index2][index3][$lang];

所以我的問題是:

如何使用正則表達式使用Notepad ++搜索和替換,使索引指針變成字符串,而不是充當超全局變量?

例如:

$localText[index][index2][index3][$lang];

成:

$localText['index']['index2']['index3'][$lang];

我將需要某種邏輯來檢查方括號內的內容,並用單引號將它們封裝起來,最后一個索引[$lang]除外。

我試圖提供盡可能多的信息,讓我知道是否需要詳細說明。

我沒有太多運氣就嘗試引用這些文檔

您可以使用以下正則表達式進行匹配:

\[[^'](\w+)[^']\]

regex匹配方括號之間的單詞,除非用引號引起來。

用。。。來代替:

['$1']

正則表達式將不匹配最后一個括號,因為它包含一個' $ '符號。

我找到了一個解決方案

這個:

找到: \\b(localText\\[)([a-zA-z0-9_\\-]+)(\\]\\[)([a-zA-z0-9_\\-]+)(\\]\\[)([a-zA-z0-9_\\-]+)

替換: $1'$2'$3'$4'$5'$6'

它就像一個魅力。 感謝所有花時間幫助您的人。

暫無
暫無

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

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