donglei2288 2015-01-15 08:22
浏览 31
已采纳

正则表达式:如何发布流程替换结果

In my text editor (phpStorm, notepad++, jedit, ect.) I have strings like:

....    $this->request_json['store-user-id'] .....
....    $this->request_json['deviceID'] ....

I need to replace them to:

$this->request->store_user_id
$this->request->device_id

i.e.

search: \-\>request_json\[\"([\w_\-]+)\"\]
replace: ->request->$1

BUT: I need additional inline substitution "-" -> "_", transformation to lower case and preceding every capital letter with "_".

Is that possible using perl-style regex? Maybe recursive?

  • 写回答

2条回答 默认 最新

  • douyou3619 2015-01-15 10:50
    关注

    Finally solved the problem in php:

    $fstr = implode("", file("file_with_text_to_replace.php"));
    $rfstr = preg_replace_callback("/\\-\\>request_json\\[(?:\\\"|\\')([\\w_\\-]+)(?:\\\"|\\')\\]/",
                 function ($matches)
                 {
                   //any post-processing
                   return  "->request->" . str_replace("-","_", $matches[1]);
                 },
                 $fstr);
    

    It's the most powerful solution. I'm a little lost touch with php these days, but I'm very surprised that nobody pointed to this php function. It gives full control over the search result, impossible in text editors. Brilliant!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 用sql语句完成下列问题
  • ¥50 yalmip+Gurobi 求解线性规划
  • ¥15 微信开发者工具/云函数/数据库
  • ¥15 如何导出数据库中的表格
  • ¥15 Torch not compiled with CUDA enabled
  • ¥15 三种节点编号优化算法比较
  • ¥15 比特币ord程序wallet_constructor.rs文件支持一次性铸造1000个代币,并将它们分配到40个UTXO上(每个UTXO上分配25个代币),并设置找零地址
  • ¥115 用Java解决探地雷达dzt文件的解析过程
  • ¥20 有关神经网络这道(b)determine the parameters of neural network
  • ¥25 annaconda jvpyter