【问题标题】:regex for changing array() to [] using atom使用 atom 将 array() 更改为 [] 的正则表达式
【发布时间】:2020-10-10 03:45:45
【问题描述】:

我想将我的 php 脚本更新为一个项目(全局)并更改数组(元素);到[元素];

使用 atom 我已经为数组的初始化运行了更新,并且已经更改了 array();到 [];但是这只是处理空数组初始化代码。

现在的挑战是将实际上包含元素的数组从 () 更改为 []

例如,数组可以有多种格式

array('content',number content,'content');

array(
      'content',
                array(
                      number content,'content'
                      )
      );

或任何级别数量的变化。

我已经这样分解了,但我不知道如何做正则表达式。,

找到每一个出现的数组( - 替换为 [

找到该数组的关联关闭); - 替换为 ];

找到每个数组(在另一个数组中( - 替换为 [

找到另一个数组中的每个数组的关联关闭);要不就 ), - 用。。。来代替 ];或],

我认为应该涵盖它.... 正则表达式是不可能的吗?

谢谢

【问题讨论】:

  • 这至少可以说是一个挑战。 Atom 和其他现代编辑器已经内置了特定于语言的智能感知功能,这些功能在这里可能会派上用场,但单独使用 Regexp 来实现要么非常困难,要么容易出错。
  • 您可以尝试重复应用以下正则表达式:array\(([^()]*)\),替换字符串:array[$1]。它将从内到外工作。但前提是您的数组元素的任何字符串中都没有 ()
  • 嗯,我的感觉是,即使有一些错误导致,当发现时单独修复这些比手动更改所有这些更容易。至少正则表达式可以完成大部分工作,然后我们需要在此之后进行更正。
  • 根据 regex101 站点将匹配 array(1,'goat') 和这个数组的内部数组('happy',36, array('sad',25) );然后一旦内部改变,然后你再次运行它并改变外部......这可能工作得很好......
  • 但是第一个错误...它还匹配 is_array($value) 和其他数组函数,例如 in_array 也不好,我该如何排除该函数,我应该排除任何带有 _ 前面的数组或者只是前面所有数组中的任何内容

标签: php arrays atom-editor


【解决方案1】:

看到您愿意事后进行一些手动维修,并且您对我评论中建议的解决方案感兴趣,我现在将其放入“正确”的答案形式中。这更容易编辑和讨论。如前所述,这只是一种“解决方法”,因为我们并没有真正在语法上真正理解来解析文本。但是,当您应用以下正则表达式时

\barray\(([^()]*)\)

重复并替换为

[$1]

(是的,我在“[”前面省略了“数组”!)你可能有机会做你想做的事。

我在正则表达式前面放了一个\b 以使其查找单词边界。通过这种方式,我们排除了 is_array()myarray() 等文本片段的更改。

【讨论】:

  • 我真是个白痴,它不是数组 [],它只是 [],我必须重新开始,因为我没有发现那个错误。 $array = array() 被修改为 $array = [] 很伤心我搞砸了......所以我们需要重做正则表达式来将 array() 更改为 [] 吗?我很抱歉...
  • 我确实将原始请求更改为正确的语法
猜你喜欢
  • 2016-07-19
  • 1970-01-01
  • 1970-01-01
  • 2020-06-05
  • 2018-03-30
  • 1970-01-01
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
相关资源
最近更新 更多