gpt4 book ai didi

ruby-on-rails - 正则表达式 : How do I grab a block of text using regex?(在 ruby​​ 中)

转载 作者:数据小太阳 更新时间:2023-10-29 07:45:47 26 4
gpt4 key购买 nike

我正在使用 ruby​​,我正试图找到一种在 {start_grab_entries} 和 {end_grab_entries} 之间抓取文本的方法,如下所示:

{start_grab_entries}
i want to grab
the text that
you see here in
the middle
{end_grab_entries}

像这样:

$1 => "i want to grab
the text that
you see here in
the middle"

到目前为止,我尝试将其作为正则表达式:

\{start_grab_entries}(.|\n)*\{end_grab_entries}

但是,使用 $1,这给了我一个空白。您知道我可以做些什么来正确抓取标签之间的文本 block 吗?

最佳答案

有一个更好的方法可以让点匹配换行符(/m修饰符):

regexp = /\{start_grab_entries\}(.*?)\{end_grab_entries\}/m

此外,通过附加 ? 使 * 变得惰性,否则如果您的输入中出现多个这样的部分,您可能会匹配太多。

就是说,您得到空白匹配的原因是您重复了捕获组本身;因此,您只捕获了最后一次重复(在本例中为 \n)。

如果您将捕获组放在重复的之外,它就会“起作用”:

\{start_grab_entries\}((?:.|\n)*)\{end_grab_entries\}`

但是,如上所述,有更好的方法来做到这一点。

关于ruby-on-rails - 正则表达式 : How do I grab a block of text using regex?(在 ruby​​ 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3855654/

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