Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby正则表达式匹配帮助_Ruby_Regex_String_String Matching - Fatal编程技术网

Ruby正则表达式匹配帮助

Ruby正则表达式匹配帮助,ruby,regex,string,string-matching,Ruby,Regex,String,String Matching,这只是一个一般性的“我的正则表达式有什么问题,它没有把我期望的一切都拉出来”的问题 这是我的字符串: "Mon 0900-1600 1700-2000" 我希望能够把《泰晤士报》“0900-1600”和“1700-2000” 这是我的regexp/([0-9]{4}-[0-9]{4})/,虽然它在查找第一次出现的时间方面非常有效,但它不会返回与第二次出现的匹配。有人能告诉我为什么吗 下面是我记录的实际代码片段: str = "Mon 0900-1600 1700-2000" /([0-9]{

这只是一个一般性的“我的正则表达式有什么问题,它没有把我期望的一切都拉出来”的问题

这是我的字符串:

"Mon 0900-1600 1700-2000"
我希望能够把《泰晤士报》
“0900-1600”
“1700-2000”

这是我的regexp
/([0-9]{4}-[0-9]{4})/
,虽然它在查找第一次出现的时间方面非常有效,但它不会返回与第二次出现的匹配。有人能告诉我为什么吗

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

str = "Mon 0900-1600 1700-2000"

/([0-9]{4}-[0-9]{4})/.match(str)  #<MatchData "0900-1600">
str=“Mon 0900-1600 1700-2000”
/([0-9]{4}-[0-9]{4})/.match(str)#
尝试改用:

尝试改用:

为什么不使用String#split

否则,请简化并使用:

asdf.scan(/\d+-\d+/) #=> ["0900-1600", "1700-2000"]
为什么不使用String#split

否则,请简化并使用:

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

当要丢弃的子字符串遵循简单模式时,
split
很好,而当要获取的子字符串遵循简单模式时,
scan
很好。在这种情况下,肯定是后者。我看没有理由在这种情况下使用split。@sawa,没有“肯定”。关于这个问题,我们所知道的就是OP所说的。根据描述,两者都足够了,但是拆分更简单。在这里使用
split
需要两个步骤。你必须做
[1,2]
来摆脱
“Mon”
。这是因为您要抛出的第一个子字符串(
“Mon”
)和分隔符
不是同构的。这难道不比在第二个示例中使用
scan
一步完成更复杂吗?
split
在您想要丢弃的子字符串遵循简单模式时很好,而
scan
在您想要获取的子字符串遵循简单模式时很好。在这种情况下,肯定是后者。我看没有理由在这种情况下使用split。@sawa,没有“肯定”。关于这个问题,我们所知道的就是OP所说的。根据描述,两者都足够了,但是拆分更简单。在这里使用
split
需要两个步骤。你必须做
[1,2]
来摆脱
“Mon”
。这是因为您要抛出的第一个子字符串(
“Mon”
)和分隔符
不是同构的。这难道不比第二个例子中的
scan
一步完成更复杂吗?
asdf.scan(/\d+-\d+/) #=> ["0900-1600", "1700-2000"]