获取Ruby字符串中特定单词后的单词吗?
如何在Ruby字符串中的特定单词之后获取单词?获取Ruby字符串中特定单词后的单词吗?
例如:
From:Ysxrb<[email protected]>\nTo: <[email protected]>Subject: xyzabc\nDate: Tue, 19 Jun 2012 03:26:56 -0700\nMessage-ID: <[email protected]>
我只是想:
Ysxrb<[email protected]
xyzabc
我认为你的问题/需求可能需要一些细化。
您声明:“如何获取红宝石字符串中特定单词之后的单词?”您的示例文本是这样的:“From:Ysxrb \ nTo:Subject:xyzabc \ nDate:Tue,2012年6月19日03:26:56 -0700 \ nMessage-ID:< [email protected]>”
,然后你终于说,你真的想这些字符串是什么下面的话:
“‘Ysxrb’和‘XYZABC’”。
你会一直在解析电子邮件的文本,这看起来是什么?如果是这样,那么你可以采取一些更具体的方法。举例来说,在这个例子中,你可以做这样的事情:
eml = "From:Ysxrb\nTo: Subject: xyzabc\nDate: Tue, 19 Jun 2012 03:26:56 -0700\nMessage-ID: <[email protected]>"
tokens = eml.split(/[\s\:]/)
这会产生这样的:
["From", "Ysxrb", "To", "", "Subject", "", "xyzabc", "Date", "", "Tue,", "19", "Jun", "2012", "03", "26", "56", "-0700", "Message-ID", "", "<[email protected]>"]
此时,如果字下面的“收件人”和“主题”是什么你“以后再,你可以简单地得到了第一个非空数组元素各一个,这样的:
tokens[tokens.find_index("From") + 1] => "Ysxrb"
tokens[tokens.find_index("Subject") + 2] => "xyzabc" # + 2 is needed because of the newline.
这正是我想要的!非常感谢你!! – user1429322 2012-08-01 16:09:57
太棒了!很高兴我能帮上忙 :) – MotownJoe 2012-08-01 18:37:46
您可以使用正规表示法,试试这个IRB控制台上:
string = "From:Ysxrb<[email protected]>\nTo: <[email protected]>Subject:"
/From:(.+)\n/.match string
$1
$ 1保持我们在正则表达式的括号捕获反向引用
你可以尝试一个正则表达式,这里有一个例子:
>> s = "From:Ysxrb\nTo: Subject: xyzabc\nDate: Tue, 19 Jun 2012 03:26:56 -0700\nMessage-ID: <[email protected]>"
=> "From:Ysxrb\nTo: Subject: xyzabc\nDate: Tue, 19 Jun 2012 03:26:56 -0700\nMessage-ID: <[email protected]>"
>> m, w1, w2 = s.match(/^From:(\w*)\W+.*Subject: (\w*)/).to_a
=> ["From:Ysxrb\nTo: Subject: xyzabc", "Ysxrb", "xyzabc"]
>> w1
=> "Ysxrb"
>> w2
=> "xyzabc"
找出一个良好的正则表达式你要求,您可以使用rubular, a Ruby regular expression editor
您的最终目标似乎是试图解析电子邮件。也许email_reply_parser会适合你的需要? https://github.com/github/email_reply_parser – 2012-07-31 21:23:40