ruby - 如何在 Ruby 中返回两个字符串之间的字符串的子字符串?

标签 ruby regex

如何在 Ruby 中返回字符串的两个字符串标记之间的字符串?

例如我有:

  • 输入字符串
  • str1_markerstring
  • str2_markerstring

想要做这样的事情:

input_string.string_between_markers(str1_markerstring, str2_markerString)

示例文本:

s
# => "Charges for the period 2012-01-28 00:00:00 to 2012-02-27 23:59:59:<br>\nAny Network Cap remaining: $366.550<br>International Cap remaining: $0.000"
str1_markerstring
# => "Charges for the period"
str2_markerstring
# => "Any Network Cap"
s[/#{str1_markerstring}(.*?)#{str2_markerstring}/, 1]
# => nil  # IE DIDN'T WORK IN THIS CASE

使用 Ruby 1.9.3。

最佳答案

input_string = "blahblahblahSTARTfoofoofooENDwowowowowo"
str1_markerstring = "START"
str2_markerstring = "END"

input_string[/#{str1_markerstring}(.*?)#{str2_markerstring}/m, 1]
#=> "foofoofoo"

或者把它放在一个方法中:

class String
  def string_between_markers marker1, marker2
    self[/#{Regexp.escape(marker1)}(.*?)#{Regexp.escape(marker2)}/m, 1]
  end
end

"blahblahblahSTARTfoofoofooENDwowowowowo".string_between_markers("START", "END")
#=> "foofoofoo"

关于ruby - 如何在 Ruby 中返回两个字符串之间的字符串的子字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9661478/

相关文章:

c# - 如何从 C# 中的字符串中删除多个、重复和不必要的标点符号?

regex - 如何为以 .php 结尾的文件制作正则表达式?

java - 从字符串中拆分地理坐标的正则表达式

ruby-on-rails - 在 Rails 显示 View 中映射和链接模型实例

ruby - ruby 中字符的整数值?

objective-c - 来自脚本语言(Lua、Ruby 等)的 Cocoa 桥是否需要 MacOS 上的编译部分才能工作?

php - 防止php中的邮件注入(inject)拦截一些字符\r,\n,%0A,%0D

ruby-on-rails - rabl View 中的片段缓存?

ruby-on-rails - 无法安装 nokogiri gem

javascript - 为什么当我向其中写入波斯字符时,textarea 的值会发生变化?