sjs*_*jsc 3 ruby regex ruby-on-rails
我正在使用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}
Run Code Online (Sandbox Code Playgroud)
像这样的东西:
$1 => "i want to grab
the text that
you see here in
the middle"
Run Code Online (Sandbox Code Playgroud)
到目前为止,我尝试了这个作为我的正则表达式:
\{start_grab_entries}(.|\n)*\{end_grab_entries}
Run Code Online (Sandbox Code Playgroud)
但是,使用$ 1,这给了我一个空白.你知道我能做些什么来正确地抓住标签之间的文本块吗?
有一种更好的方法可以让点匹配换行符(/m修饰符):
regexp = /\{start_grab_entries\}(.*?)\{end_grab_entries\}/m
Run Code Online (Sandbox Code Playgroud)
另外,*通过附加a 来设置延迟?,或者如果输入中出现多个这样的部分,则可能会匹配太多.
也就是说,你得到一个空白匹配的原因是你重复捕获组本身 ; 因此你只抓住了最后一次重复(在这种情况下,a \n).
如果您将捕获组放在重复之外,它将"有效" :
\{start_grab_entries\}((?:.|\n)*)\{end_grab_entries\}`
Run Code Online (Sandbox Code Playgroud)
但是,如上所述,有一种更好的方法可以做到这一点.
| 归档时间: |
|
| 查看次数: |
12828 次 |
| 最近记录: |