[英]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.