gpt4 book ai didi

ruby - 修改替换中的正则表达式匹配

转载 作者:数据小太阳 更新时间:2023-10-29 08:32:36 27 4
gpt4 key购买 nike

我试图用正则表达式匹配文本文件中的一些字符串,然后修改找到该模式的所有位置。这就像搜索和替换,但我正在尝试用找到的内容的修改版本替换(我确定它有一个名称,但我对它不够熟悉)。

所以我正在寻找匹配 [a-z]_[a-z] 的字符串(例如,some_string),我想通过删除下划线和大写来替换它第二个小写单词,基本上是驼峰式的 (someString)。

有关如何执行此操作的任何指示(棘手的部分是我真的不知道如何为此谷歌搜索)。

编辑

我试图稍微简化问题以使其更通用,但我也试图仅在引号中没有匹配的情况下才这样做。也就是说,我不想匹配引号中的下划线(因此,此处不匹配:"this_is_a_string"...应该保持原样)。当我第一次发布这篇文章时,我可能应该包括这个。

最佳答案

你可以在 gsub 中使用回调函数,例如:

"some_thing_good".gsub(/_([a-z])/) {|m| m[1].upcase}

要避免双引号内的字符串,您可以这样做:

"\"look_at_me\" some_thing_good".gsub(/"[^"]+"|_[a-z]/) {|m| (m.length>2)? m : m[1].upcase }

思路是之前匹配他们,自己替换。如果我测试匹配长度,我会立即知道交替的哪一部分已经匹配,因为第二部分只包含 2 个字符而第一部分至少包含 3 个字符。

关于ruby - 修改替换中的正则表达式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17155739/

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