gpt4 book ai didi

regex - 如何使用 sed/perl 仅查找二维数组并替换文本?

转载 作者:行者123 更新时间:2023-12-01 10:04:35 24 4
gpt4 key购买 nike

目前我有大量的代码如下所示:

static double    testVar1          [2][8]  = {0.0}    ;  /* This is for testing var 1 */
static double var_test2 [3][2] = {0.0} ; /* This is for testing var 2 */
static double var_test3 [4] = {0.0} ; /* This is for testing var 3 */

C++ 中的二维数组用双大括号初始化,所以我只需要找到二维数组并像这样更改它:

static double    testVar1          [2][8]  = {{0.0}}  ;  /* This is for testing var 1 */
static double var_test2 [3][2] = {{0.0}} ; /* This is for testing var 2 */
static double var_test3 [4] = {0.0} ; /* This is for testing var 3 */

我一直在尝试使用 sed 来使用分组,但我不知道如何转义括号,有些帖子建议根本不要转义。我也尝试过不使用扩展正则表达式。

刚才,我发现 sed 中只有 9 个分组是可能的,所以现在完全卡住了。有什么建议吗?

sed -i -r 's/(.*)(\[)([0-9]+)(\])(\[)([0-9]+)(\])(.*)(\{)(0.0)(\})(.*)/echo "\1\2\3"/ge'

最佳答案

使用带有以下正则表达式的 perl 脚本:

\w+\s*(?:\[\d+\]){2}\s*=\s*\K\{([\d.]*)\}

并将其替换为 \{\{\1\}\},参见 a demo on regex101.com .


分解后,它说:

\w+            # at least one word character
\s* # Zero or more spaces
(?:\[\d+\]){2} # [0][1] or any other two-dimensional array
\s*=\s* # spaces = and spaces
\K # "forget" everything
\{([\d.]*)\} # match and capture {number}

关于regex - 如何使用 sed/perl 仅查找二维数组并替换文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42758698/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com