【发布时间】:2024-01-14 16:46:01
【问题描述】:
我对 REGEX 非常了解,但我一直坚持这一点。我正在使用 PHP 5.4 到 shell_exec() 一个带有 REGEX 的 grep 语句,以捕获文本文件中的 SKU。在 php 中我没有看到错误,但 grep 不起作用。
目标是在此文本中捕获 SKU:
{'Product_Product_SKU': 'DOP36M94DPM'},
PHP 代码:
$cmdSKU1 = 'grep -Po \'(?<=\{\'Product_Product_SKU\':\s{15}\').+?(?=\'\}\,)\' '.$FileName;
$chkSKU1 = trim(shell_exec($cmdSKU1));
此外,当我在我使用的 IDE 的调试器工具中查看 $cmdSKU1 变量时,它的值是一行:
grep -Po '(?<=\{'Product_Product_SKU':\s{15}').+?(?='\}\,)' /opt/web/default/RetailerParsing/RetailerDownload/MDD30TMSTH__20220113091043.htm
此外,当我将它粘贴到 Ubuntu 控制台时,它给了我错误:
-bash: syntax eror near unexpected token `)'
即使我回去转义暴露的单引号。事实上,我逃脱了所有 [^A-Za-z0-9] 只是为了确保!没有豆子。
最后,如果我尝试在 PHP IDE 中对 REGEX 中的单引号进行双重转义,我会在 Produce_Product_SKU 字下看到一个红色波浪下划线错误。
【问题讨论】: