我使用:Ruby的正則表達式匹配重疊方面
r = /(hell|hello)/
"hello".scan(r) #=> ["hell"]
,但我想獲得[ "hell", "hello" ]
。
http://rubular.com/r/IxdPKYSUAu
我使用:Ruby的正則表達式匹配重疊方面
r = /(hell|hello)/
"hello".scan(r) #=> ["hell"]
,但我想獲得[ "hell", "hello" ]
。
http://rubular.com/r/IxdPKYSUAu
您可以使用一個票友捕獲:
'hello'.match(/((hell)o)/).captures
=> ["hello", "hell"]
真是奇特:-) – 2011-12-30 20:57:59
不,正則表達式不起作用這樣。但是你可以做這樣的事情:
terms = %w{hell hello}.map{|t| /#{t}/}
str = "hello"
matches = terms.map{|t| str.scan t}
puts matches.flatten.inspect # => ["hell", "hello"]
你可以做這樣的事情:
它不會給你["hell", "hello"]
,而是["hell", "o"]
嗯,你總是可以列出常見的子表達式。即以下工作:
r = /hello{0,1}/
"hello".scan(r) #=> ["hello"]
"hell".scan(r) #=> ["hell"]
後匹配自己或者使用更簡單的'/你好?/' – 2011-12-30 20:47:11
無論是掃描兩次,或找出哪些字符串包含相互計算檢查只有最長 – klochner 2011-12-30 20:22:31