Mis*_*hko 2 ruby regex heredoc gsub
我想从notes一切开始删除example_header.我试着这样做:
example_header = <<-EXAMPLE
-----------------
---| Example |---
-----------------
EXAMPLE
notes = <<-HTML
Hello World
#{example_header}
Example Here
HTML
puts notes.gsub(Regexp.new(example_header + ".*", Regexp::MULTILINE), "")
Run Code Online (Sandbox Code Playgroud)
但输出是:
Hello World
||
Run Code Online (Sandbox Code Playgroud)
为什么||不删除?
正则表达式中的管道被解释为交替运算符.您的正则表达式将替换以下三个字符串:
"-----------------\n---"
" Example "
"---\n-----------------"
Run Code Online (Sandbox Code Playgroud)
您可以通过Regexp.escape在正则表达式(ideone)中使用它来转义字符串来解决问题:
puts notes.gsub(Regexp.new(Regexp.escape(example_header) + ".*",
Regexp::MULTILINE),
"")
Run Code Online (Sandbox Code Playgroud)
您还可以考虑避免使用正则表达式,而只使用普通的字符串方法(ideone):
puts notes[0, notes.index(example_header)]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
346 次 |
| 最近记录: |