我一直在使用正则表达式(在textmate的find& replace工具中)重新格式化我收到的PHP数组中的值表。
我已经完成了大部分工作 - 但是在最后的改变中挣扎。
当前状态:
$subSectors[1] = 'Crop & Animal Production, Hunting & Related Service Activities'; [1]
$subSectors[2] = 'Forestry & Logging'; [1]
我希望批量替换(100行),以便最终字符[\ d {0-3}]移动为主数组键。
所以上面两行将成为:
$subSectors[1][1] = 'Crop & Animal Production, Hunting & Related Service Activities';
$subSectors[1][2] = 'Forestry & Logging';
行括号内的值可以是1-3位数。
我可以使用以下方式匹配括号内的值:
\[\d{0,3}]$
但是不知道如何构造替换字符串。
答案 0 :(得分:2)
答案 1 :(得分:1)
如果要将部件移动到字符串的其他部分,则必须扩展模式以包含字符串的所有受影响部分,而不仅仅是匹配,即[1]部分。
所以,比如:
匹配度:
^(\$\w+\[\d+\])([\s\S]+?)(\[\d{0,3}\])(?=\r|$)
替换:
$1$3$2
答案 2 :(得分:0)
你的正则表达式很花哨可爱,我相信它运作得很好。
如果您已经在使用TextMate,那么有更好的方法。
我制作了一个视频,说明如何使用TextMate的multiple carets功能完成此操作,这非常可爱我不介意传播它。
我在视频中所做的是;
在您喜欢的行中选择列。在视频中,我单击第一行,然后按选项+ shift并单击最后一行。 Shift在插入符号之间进行选择,选项使选择成为一列(而不是选择文本块)。
按向左或向右箭头键清除选择,然后产生插入符号。
按Command + Right将所有插入符号移动到各自行的末尾。
按两次Shift + Option +左键。您可以看到TextMate根据您选择的内容进行不同的选择。 Shift选择,选项以上下文敏感的方式移动插入符号。
Command + X切割括号中的数字。 Textmate将记住你复制它们的顺序。
命令左移回到行的开头,这也重新调整了插入符号。
选项+直到您处于适当位置,粘贴。 Textmate替换了你在每个插入符号上剪切的内容。
它比正则表达式更好?
与这个问题上的正则表达式相比,实际上击键次数(9次)更少(分别为53或44,计算替换次数)
您无需了解正则表达式
您不需要查找窗口
情况怎么样?