Ruby 若行包含单词,则将行放入变量中

Ruby 若行包含单词,则将行放入变量中,ruby,Ruby,我花了几个小时在谷歌上搜索,但找不到确切的答案 我想搜索多行文本文件,如果一行包含“dog”,则将该行放入变量中 以下是我的代码: if File.foreach('textfile.txt').grep(/dog/) 我希望下一行代码将包含'dog'的行放入变量wordline中 我还可能搜索多个术语,而不是一个术语,即: if File.foreach('textfile.txt').grep(/cat|dog/) 我意识到也可以用不同的方式,比如: wordline=File.fore

我花了几个小时在谷歌上搜索,但找不到确切的答案

我想搜索多行文本文件,如果一行包含
“dog”
,则将该行放入变量中

以下是我的代码:

if File.foreach('textfile.txt').grep(/dog/)
我希望下一行代码将包含
'dog'
的行放入变量
wordline

我还可能搜索多个术语,而不是一个术语,即:

if File.foreach('textfile.txt').grep(/cat|dog/)
我意识到也可以用不同的方式,比如:

wordline=File.foreach('textile.txt').grep(/dog/)
但是我不知道内联版本的语法


编辑:这是我有史以来的第一篇帖子,我是一个十足的红宝石新手。。我在帖子里提到过。但是有人删掉了所有的内容,并对我的帖子投了反对票。我在发布之前确实阅读了常见问题,所以下次欢迎对批评行为进行解释

这里的总体思路是:

matching = File.readlines('text.txt').grep(/dog|cat/)
或者更一般地说:

terms = %w[ dog cat ]

matching = File.readlines('text.txt').grep(Regexp.union(terms))
由于
匹配
是一个数组,您可以引用其中的元素,如
匹配[0]
匹配。首先
或在必要时使用
对其进行迭代。每个
。要将第一个匹配项指定给变量,请执行以下操作:

first_match = matching.first

请注意,
grep
总是返回一个数组,而数组,即使是空的,在逻辑上也是真的。如果的话,
将永远不会触发。谢谢,这就是我想要的语法。我的测试成功了,我得到了包含所需单词的行。但是,此文件的行似乎在开头有\t。有时在结尾\n。有没有办法删除那些\t\n具有相同单行语法的字符?i、 例如:matching=File.readlines('text.txt').grep(/dog | cat/)删除'\n'和'\t',或者我只需要从'matching'中生成第二个变量,在去掉制表符和换行符的情况下,您可以删除诸如
File.readlines(…).map{s | s.gsub(/\s+/,'')
之类的换行符以去掉任何空格、制表符或换行符。如果需要的话,你也可以继续用链子把它拴起来。这会使这行文字变得不可读,尽管单词之间没有空格。我可以使用.map{s | s.gsub(/\t\n/,'')}来删除换行符和制表符吗?在这种情况下,
/[\t\n]/
就可以了。这意味着使用
[…]
符号的“任意”<代码>\t\n
否则表示“制表符后跟换行符”。