作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在使用 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/
我是一名优秀的程序员,十分优秀!