Ruby 正则表达式匹配帮助

发布于 2024-10-21 15:19:58 字数 436 浏览 6 评论 0原文

这只是一个一般性的“我的正则表达式出了什么问题,它没有提取出我期望的所有内容”问题。

这是我的字符串:

"Mon 0900-1600 1700-2000"

我希望能够提取时间 "0900-1600""1700-2000"

这是我的正则表达式 /([0-9]{4}-[0-9]{4})/ ,虽然它在查找时间的第一次出现方面效果很好,但它并没有返回第二个匹配项。有人能告诉我为什么吗?

这是我记录的实际代码片段:

str = "Mon 0900-1600 1700-2000"

/([0-9]{4}-[0-9]{4})/.match(str)  #<MatchData "0900-1600">

This is just a general 'What is wrong with my regex that its not pulling out everything I expected' question.

Here's my string:

"Mon 0900-1600 1700-2000"

and I'd like to be able to pull out the times "0900-1600" and "1700-2000".

This is my regexp /([0-9]{4}-[0-9]{4})/ and while it works great at finding the first occurrence of the time, it doesn't return a match to the second. Could someone tell me why?

Here's my actual code snippet for the record:

str = "Mon 0900-1600 1700-2000"

/([0-9]{4}-[0-9]{4})/.match(str)  #<MatchData "0900-1600">

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

眸中客 2024-10-28 15:19:58

尝试使用 string#scan 代替:

ruby-1.9.2-p136 :001 > str = "Mon 0900-1600 1700-2000"
 => "Mon 0900-1600 1700-2000" 
ruby-1.9.2-p136 :002 > str.scan /([0-9]{4}-[0-9]{4})/
 => [["0900-1600"], ["1700-2000"]]

Try using string#scan instead:

ruby-1.9.2-p136 :001 > str = "Mon 0900-1600 1700-2000"
 => "Mon 0900-1600 1700-2000" 
ruby-1.9.2-p136 :002 > str.scan /([0-9]{4}-[0-9]{4})/
 => [["0900-1600"], ["1700-2000"]]
难得心□动 2024-10-28 15:19:58

为什么不使用 String#split 呢?

asdf = "Mon 0900-1600 1700-2000"
asdf.split(' ')[1,2] #=> ["0900-1600", "1700-2000"]

否则简化并使用:

asdf.scan(/\d+-\d+/) #=> ["0900-1600", "1700-2000"]

Why not use String#split?

asdf = "Mon 0900-1600 1700-2000"
asdf.split(' ')[1,2] #=> ["0900-1600", "1700-2000"]

Otherwise simplify and use:

asdf.scan(/\d+-\d+/) #=> ["0900-1600", "1700-2000"]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文