繁体   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