ruby 打印 2 个字符串之间选定的文本行

2024-03-11

我试图在 ruby​​ 中的两个字符串之间获取一组文本,但我似乎无法获得正确的方法或使用正确的正则表达式。

text:

<html>
<body>

<!-- begin posts --> 

<h1>all kinds of html<h1>
<p> blah blah </p>
<p> i've been working on this forever </p>

<!-- end posts --> 

</html>
</body>

我只想从中得到一切<!-- begin posts --> to <!-- end posts -->,包含在内,并将该文本块保存在文本文件中。

我想出了如何在开头打印该行:

File.open("index.html").each_line do |line|
body.each {|line| puts line if line =~ /<!-- begin/}

但不是从 up 到最后一个字符串之后的行。

我这里有红宝石http://rubular.com/r/0W9QDpMGkM http://rubular.com/r/0W9QDpMGkM我无法弄清楚任何事情。

预先感谢大家。


不要逐行进行,只需将整个内容放入字符串中并将其撕开即可:

s    = File.read('index.html')
want = s.match(/<!-- begin posts -->(.*)<!-- end posts -->/m)[1]

现在你的标记之间的所有内容都在want。不要忘记m正则表达式上的修饰符。

当您修改输入时,您也可以删除杂散的前导和尾随空格:

want = s.match(/<!-- begin posts -->(.*)<!-- end posts -->/m)[1].strip

正如都铎在下面指出的那样,您可能想要使用非贪婪(.*?)对于该团体,如果您认为有可能有多个<!-- end posts -->标记;当他们真的是你来抓你时,有点偏执也没什么坏处。

参考:

  • File.read http://ruby-doc.org/core/classes/IO.html#M000883(实际上IO.read)
  • String#match http://ruby-doc.org/core/classes/String.html#M001136
  • String#strip http://ruby-doc.org/core/classes/String.html#M001189

UPDATE: the match http://ruby-doc.org/core/classes/String.html#M001136字符串上的方法返回一个匹配数据 http://ruby-doc.org/core/classes/MatchData.html目的。这数组访问运算符 http://ruby-doc.org/core/classes/MatchData.html#M000407:

... mtch[0]相当于特殊变量$&,并返回整个匹配的字符串。mtch[1], mtch[2],依此类推,返回匹配的反向引用的值(括号之间的模式部分)。

用于访问匹配的部件。正则表达式中只有一组,所以[1]获取该组的内容,不带周围的 HTML 注释分隔符。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ruby 打印 2 个字符串之间选定的文本行 的相关文章

  • 为什么 C# ProcessStartInfoRedirectStandardOutput 会导致 xcopy 进程失败

    这有点痛苦 因为我现在没有代码 但我会尽力解释 我有一个简单的 C 应用程序 它启动 Ruby 脚本 它还执行一些其他操作 因此它生成一个批处理文件并执行该文件 我正在使用 C 进程对象并设置以下内容 重定向标准输出 true 重定向标准错
  • PHP 删除字符最后一个实例之前的所有内容

    有没有办法删除某个字符之前的所有内容 包括最后一个实例 我有多个字符串 其中包含 gt e g the gt cat gt sat gt on gt the gt mat welcome gt home 我需要对字符串进行格式化 以便它们变
  • 如何在 Ruby 中转义单引号?

    我通过一个脚本 不是我的 将一些 JSON 传递到服务器 该脚本接受 JSON 作为字符串 JSON 的某些内容包含单引号 因此我想确保在传递给脚本之前对所有单引号进行转义 我已经尝试过以下方法 gt irb gt 1 9 3p194 00
  • 与heroku配合使用的统计引擎

    我有一个 Heroku Rails 应用程序 需要处理一些重要的数字 并且我需要使用像 R 这样的统计库 更糟糕的是 MatLab 我正在寻找以下任何问题的答案 是否有不需要二进制文件的功能齐全的统计包 GEM 是否可以将 R 二进制文件作
  • 匹配没有周围字符列表的单词列表

    我有这个正则表达式 one common word or another 除非这两个单词相邻 否则它匹配得很好 One one s more word word common word or another word more anothe
  • C 编译器无法在 Mac OS Mountain Lion 上创建可执行文件

    我几乎浏览了每一页 但所有提示都不能解决问题 我正在运行 Mountain Lion 我有 Xcode 所有最新的开发工具 最新的 GCC 等等 我正在尝试设置 rbenv 和 ruby build 一切似乎都正常 但是当我去安装 ruby
  • Swift 中的 preg_match 等效项

    我尝试将 PHP 函数转换为 Swift 该函数用于根据 my 正则表达式将字符串格式化为另一个字符串 这就是我在 PHP 中所做的 preg match P 0 9 Y 0 9 M 0 9 D T 0 9 H 0 9 M 0 9 0 9
  • 从标签中提取 HTML5 数据属性

    我想从标签中提取所有 HTML5 数据属性 就像这个 jQuery 插件 http www orangesoda net jquery dataset html 例如 给定 span class highlight Joe Bloggs s
  • 使用带有字边界的 mgsub 函数作为替换值

    我试图用空格替换向量中字符串元素的子字符串 以下是我们正在考虑的向量 test lt c PALMA DE MALLORCA THE RICH AND THE POOR A CAMEL IN THE DESERT SANTANDER SL
  • while 循环中 regex.exec() 赋值的更好解决方案

    这里有更好的解决方案吗 我尽量避免里面的作业while但仍然能够循环匹配并使用捕获的组 var match var CSS URL PATTERN url s s s s gm while match CSS URL PATTERN exe
  • 正则表达式:如何找到模式的最大整数值?

    想象一下我有以下字符串 I ll have some 1 some 42 and maybe some 5 as well 基本上 我有兴趣了解遵循模式 integer 的最大整数值 我什至不确定是否可以使用正则表达式 我可以使用什么正则表
  • 为什么我不能“string”.print()?

    我的理解print 在 Python 和 Ruby 以及其他语言 中 它是字符串 或其他类型 上的方法 因为它的语法非常常用 打印 嗨 works 那么为什么不呢 hi print 在 Python 中或 hi print在红宝石工作 当你
  • sed 中的正则表达式用于在一条语句中进行多个替换

    我想清理一些输入并用可接受的输入替换几个字符 例如一个丹麦人 with aa 使用多个语句可以轻松完成此操作 例如 ae aa oe 但由于工具限制 我希望能够在单个正则表达式中完成此操作 我可以捕获所有相关案例 但我的替换不能按我想要的方
  • 在 Ruby Net::HTTP.start 中为服务调用设置 read_timeout

    我想在我的 ruby 代码中覆盖服务调用的默认超时 我打开连接如下 res Net HTTP start task url host task url port do http http get tasks task id end 我尝试将
  • R strsplit:根据字符分割,除非后面有特定字符

    假设我有一个字符串向量 例如 split these c File Location C Documents File Location Pete s Computer File Location 我想根据 分割该向量中的每个元素 除非后面
  • 在 Ruby 中将 Time 类对象转换为 RFC3339

    谷歌日历 API v2 https developers google com google apps calendar v2 developers guide protocol的时间相关查询需要采用 RFC3339 格式 当我在 需要 时
  • 如何在 Ruby 2.0 中使用调试器?

    我知道调试器 gem 不会也永远不会与 ruby 2 0 per 兼容正式支持ruby 2 X https github com cldwalker debugger issues 47 issuecomment 44027702 Ruby
  • Rails3 SQL 日志记录输出在单独的文件中

    我希望将所有 ActiveRecord SQL 日志记录重定向到不同的文件中 将其放在控制台或 log development log 中有点混乱 怎么做 我希望将其放在 log development sql log 文件中 Thanks
  • 在 cygwin 和 powershell 中查看不同的 gem 列表

    我用的是gem listpowershell 和 cygwin 中的命令都显示不同的 gem 列表 Cygwin 显示 LOCAL GEMS bundler 1 2 3 json 1 7 5 minitest 2 12 1 rake 0 9
  • 两边带有感叹号的正则表达式 ('!\d!')

    我见过正则表达式 d PHP 内部preg match功能 这到底是什么 来自PHP PCRE 文档 http php net manual en regexp reference delimiters php 使用 PCRE 函数时 要求

随机推荐