Notepad++正则表达式格式替换
Notepad++ Regex Format Replace
我对 RegEx 并不陌生,我了解它背后的总体思想并且之前使用过它并取得了不错的效果。但是这个让我热血沸腾,仅仅是因为方括号和单引号的数量。
我的一部分工作正常,另一部分坏了。我似乎无法想出一种方法让它一次性全部更换,所以我想我会看看是否有任何善良的灵魂可以帮助一个绝望的人。
基本上我有数百个这样的条目;
_newObject = createVehicle ['Land_CncWall4_F', [11459.2,11330.3,-0.000549316], [], 0, 'CAN_COLLIDE'];
_newObject setPosASL [11459.4,11330.2,317.238];
_newObject setVectorDirAndUp [[0.790714,-0.612186,0], [0,0,1]];
我想要做的是,我需要获取对象的名称,在本例中为Land_CncWall4_F。以及 setPosASL 和 VectorDirAndUp 坐标,然后将其格式化为一个新数组。
新数组看起来像这样
["Land_CncWall4_F", [11459.4, 11330.2, 317.238], [[0.790714, -0.612186, 0], [0, 0, 1]]];
我设法使用反向引用将对象的名称提取到新行中,效果很好,但如果我也尝试获取坐标,我就会迷失在我自己对正则表达式的厌恶中。
编辑:
这次我确实取得了更多进展,按照要求,这就是我目前所取得的进展;
// Find
_newObject = createVehicle \['(.*)', \[.*], 0, 'CAN_COLLIDE'];
// Replace
\n[""]
// Outcome
["Land_CncWall4_F"]
现在尝试完成其余的工作。哦 RegEx 我多么爱你又多么鄙视你 :P
编辑2:
感谢所有乐于助人的人,现在已经解决了!我最终得到了这个;
// Find
_newObject = createVehicle\s*\['(\w+)'.+\R_newObject setPosASL\s*(\[.+?\]);\R_newObject setVectorDirAndUp\s*(\[\[.+?\]\]);
// Replace
["", , , false],
最终输出如下所示;
["Land_CncWall4_F", [11449.9,11318.2,317.056], [[0.780067,-0.625696,0], [0,0,1]], false],
这正是我想要的。感谢大家的帮助,让我免于掉很多痛苦的脱发 ;)
此正则表达式 _newObject setPosASL\s+(\[.*\]);$
将为括号中的组提供所需的 [11459.4, 11330.2, 317.238]
此正则表达式 _newObject setVectorDirAndUp\s+(\[\[.*\]\]);$
将为括号中的组提供所需的 [[0.790714,-0.612186,0], [0,0,1]]
因为我假设你得到了 Land_CncWall4_F,假设它是 group1,你可以像
["group1", group2, group3]
notepad++ 中的第一个示例如下所示:
这可能对您有所帮助:
(?s)\['(?<object>[^']+)'.*?setPosASL\s*(?<setPosASL>[^;]+).*? setVectorDirAndUp\s*(?<VectorDirAndUp>[^;]+)(?s-)
诀窍是使用单行模式并逐字查找命令。请参阅 regex101.com 上的演示。您显然可以省略命名组并像往常一样对它们进行排序 (1-x
)。
怎么样:
查找内容:createVehicle\s*\['(\w+)'.+\R_newObject setPosASL\s*(\[.+?\]);\R_newObject setVectorDirAndUp\s*(\[\[.+?\]\]);
替换为:["", , ]
您输入的字符串:
_newObject = createVehicle ['Land_CncWall4_F', [11459.2,11330.3,-0.000549316], [], 0, 'CAN_COLLIDE'];
_newObject setPosASL [11459.4,11330.2,317.238];
_newObject setVectorDirAndUp [[0.790714,-0.612186,0], [0,0,1]];
变成:
_newObject = ["Land_CncWall4_F", [11459.4,11330.2,317.238], [[0.790714,-0.612186,0], [0,0,1]]]
我对 RegEx 并不陌生,我了解它背后的总体思想并且之前使用过它并取得了不错的效果。但是这个让我热血沸腾,仅仅是因为方括号和单引号的数量。
我的一部分工作正常,另一部分坏了。我似乎无法想出一种方法让它一次性全部更换,所以我想我会看看是否有任何善良的灵魂可以帮助一个绝望的人。
基本上我有数百个这样的条目;
_newObject = createVehicle ['Land_CncWall4_F', [11459.2,11330.3,-0.000549316], [], 0, 'CAN_COLLIDE'];
_newObject setPosASL [11459.4,11330.2,317.238];
_newObject setVectorDirAndUp [[0.790714,-0.612186,0], [0,0,1]];
我想要做的是,我需要获取对象的名称,在本例中为Land_CncWall4_F。以及 setPosASL 和 VectorDirAndUp 坐标,然后将其格式化为一个新数组。
新数组看起来像这样
["Land_CncWall4_F", [11459.4, 11330.2, 317.238], [[0.790714, -0.612186, 0], [0, 0, 1]]];
我设法使用反向引用将对象的名称提取到新行中,效果很好,但如果我也尝试获取坐标,我就会迷失在我自己对正则表达式的厌恶中。
编辑:
这次我确实取得了更多进展,按照要求,这就是我目前所取得的进展;
// Find
_newObject = createVehicle \['(.*)', \[.*], 0, 'CAN_COLLIDE'];
// Replace
\n[""]
// Outcome
["Land_CncWall4_F"]
现在尝试完成其余的工作。哦 RegEx 我多么爱你又多么鄙视你 :P
编辑2:
感谢所有乐于助人的人,现在已经解决了!我最终得到了这个;
// Find
_newObject = createVehicle\s*\['(\w+)'.+\R_newObject setPosASL\s*(\[.+?\]);\R_newObject setVectorDirAndUp\s*(\[\[.+?\]\]);
// Replace
["", , , false],
最终输出如下所示;
["Land_CncWall4_F", [11449.9,11318.2,317.056], [[0.780067,-0.625696,0], [0,0,1]], false],
这正是我想要的。感谢大家的帮助,让我免于掉很多痛苦的脱发 ;)
此正则表达式 _newObject setPosASL\s+(\[.*\]);$
将为括号中的组提供所需的 [11459.4, 11330.2, 317.238]
此正则表达式 _newObject setVectorDirAndUp\s+(\[\[.*\]\]);$
将为括号中的组提供所需的 [[0.790714,-0.612186,0], [0,0,1]]
因为我假设你得到了 Land_CncWall4_F,假设它是 group1,你可以像 ["group1", group2, group3]
notepad++ 中的第一个示例如下所示:
这可能对您有所帮助:
(?s)\['(?<object>[^']+)'.*?setPosASL\s*(?<setPosASL>[^;]+).*? setVectorDirAndUp\s*(?<VectorDirAndUp>[^;]+)(?s-)
诀窍是使用单行模式并逐字查找命令。请参阅 regex101.com 上的演示。您显然可以省略命名组并像往常一样对它们进行排序 (1-x
)。
怎么样:
查找内容:createVehicle\s*\['(\w+)'.+\R_newObject setPosASL\s*(\[.+?\]);\R_newObject setVectorDirAndUp\s*(\[\[.+?\]\]);
替换为:["", , ]
您输入的字符串:
_newObject = createVehicle ['Land_CncWall4_F', [11459.2,11330.3,-0.000549316], [], 0, 'CAN_COLLIDE'];
_newObject setPosASL [11459.4,11330.2,317.238];
_newObject setVectorDirAndUp [[0.790714,-0.612186,0], [0,0,1]];
变成:
_newObject = ["Land_CncWall4_F", [11459.4,11330.2,317.238], [[0.790714,-0.612186,0], [0,0,1]]]