查找/添加字符串我有這類型的作品在一個.txt文件正則表達式在PHP
rpad(SomeText, 2, \' \') , rpad(SomeTexxt, 18, \' \')
我想這些將被轉換爲
nvl(rpad(SomeText, 2, \' \'),\'$$\') , nvl(rpad(SomeTexxt, 18, \' \'),\'$$$$$$$$$$$$$$$$$$\')
我怎樣才能做到這一點用PHP ?? 新增加的$應該像2或18那樣多。
查找/添加字符串我有這類型的作品在一個.txt文件正則表達式在PHP
rpad(SomeText, 2, \' \') , rpad(SomeTexxt, 18, \' \')
我想這些將被轉換爲
nvl(rpad(SomeText, 2, \' \'),\'$$\') , nvl(rpad(SomeTexxt, 18, \' \'),\'$$$$$$$$$$$$$$$$$$\')
我怎樣才能做到這一點用PHP ?? 新增加的$應該像2或18那樣多。
您需要使用pre_replace_callback
函數。
$str="rpad(SomeText, 2, \' \') , rpad(SomeTexxt, 18, \' \')";
echo preg_replace_callback("~rpad\(\w+,\h*(\d+),[^)]*\)~", function($m){
return 'nvl('.$m[0].",\'".str_repeat("$", $m[1])."\')";
}
, $str);
(\d+)
捕獲這是本剛過到somtext和以後,它被用來根據所捕獲的數目重複$
符號若干次的數量。
輸出:
nvl(rpad(SomeText, 2, \' \'),\'$$\') , nvl(rpad(SomeTexxt, 18, \' \'),\'$$$$$$$$$$$$$$$$$$\')
嗨,謝謝你的回覆。它適用於我給出的例子。但對於我的實際情況它不工作的原因:(這是我的字符串看起來像 rpad(lookup_ext([DM_W1_XREF.DM_W1_XREF.XREF_VKORG_VTWEG,\'PRE_LOAD_CACHE \',\'MAX \'],[VKORG_NEW], (NULL),[SYSTEM_NAME,\'= \',T_M67_A033_EXT.SYSTEM_NAME,VKORG_OLD,\'= \',T_M67_A033_EXT.VKORG]) SET(\「output_cols_info \」= \'<?xml version = \「1.0 \ 「encoding = \」UTF-8 \「?>
@Tirumalesh以一個精確的字符串作爲示例,將它作爲另一個問題來提問 – 2015-02-09 05:41:44
嗨avinash,這裏有個新問題,可以試試這個嗎 http:// stackoverflow。 COM /問題/ 28403766 /正則表達式換查找和替換-A-字符串中的PHP – Tirumalesh 2015-02-09 06:20:16
你需要給有人能夠幫助你一些更多的信息。 – Peter 2015-02-06 10:09:02
我看到你需要什麼,但你能給出更多的例子來說明文本文件可能會被轉換以查看差異嗎? – 2015-02-06 10:15:59
嗨。在我的文本文件中,有一些字符串以rpad開頭,後跟一些文本,然後是一個數字,以\'\'結尾)。 我希望這些被轉換爲nvl(rpad和相同的直到\'\'),然後是$中間的數字。 – Tirumalesh 2015-02-06 10:20:23