gpt4 book ai didi

regex - eclipse - 正则表达式 : replace multiple group

转载 作者:行者123 更新时间:2023-12-02 23:48:42 24 4
gpt4 key购买 nike

someText
1
2
3
4
moreText

我想在每个数字前添加前缀。

但使用 (\w+\R)(\d+\R)+(\w+)\1prefix\2\3 只会为最后一个数字添加前缀,删除其他的。

有没有办法用一个正则表达式来做到这一点,或者我应该在旁边编写一个脚本?

最佳答案

正则表达式的问题是在 (\d+\R)+ 中使用贪婪匹配,特别是最后一个 +。上面写着,“尽可能多地匹配这个组,只要它不会导致比赛失败”。因此,对于您的文本,它会吞噬 1、2、3 和 4,然后再无法吞噬,并将最后一个匹配项放入第二个捕获组。显然,正则表达式引擎的本质是无法表达可变参数组,那么您将如何解决它们呢?所以简短的答案是,我认为正则表达式对于完全自动化的过程来说是错误的工具,您必须编写一个脚本。

但是,对于自动化程度稍低但仍包含周围文本的流程,您可以尝试

find: (\w+\R)((?:\d+\R)+)(\w+)
replace: \1prefix\2\3

我们将第二组加上它的贪婪修饰符包装在一组额外的捕获括号中,并将实际匹配的文本包含在非捕获组中。现在,我们在自己的组中拥有了完整的数字集,并且可以将前缀添加到第一个数字中。有趣的副作用是,第一个数字随后与第一组 (\w+\R) 匹配,如果您再次运行查找/替换,它将命中该行中的下一个数字,直到它不再匹配。

这样,您应该能够浏览您的文件,至少只命中您有兴趣添加此前缀的区域,并且花费的时间不应与查找每个文件中的每个数字一样长。

关于regex - eclipse - 正则表达式 : replace multiple group,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3959669/

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