這是我的文字:如何找到匹配所有部分的所有正則表達式匹配?
hello foo-1 hello bar $4 hello ...
我需要找到匹配/hello .*/
一切:
["hello foo-1", "hello bar $4", ...]
什麼是正則表達式來喂scan()
爲了實現這一目標?
這是我的文字:如何找到匹配所有部分的所有正則表達式匹配?
hello foo-1 hello bar $4 hello ...
我需要找到匹配/hello .*/
一切:
["hello foo-1", "hello bar $4", ...]
什麼是正則表達式來喂scan()
爲了實現這一目標?
使用split
與前瞻基於正則表達式:
'hello foo-1 hello bar $4 hello'.split(/(?=hello)/)
的(?=hello)
積極前瞻將在位置中的每個hello
前面的字符串分割字符串。
如果您需要擺脫尾隨空白(如果有的話)在模式開始添加\s*
的:
.split(/\s*(?=hello)/)
我正要用'scan'解決方案進行編輯 - ['s.scan(/ hello(?:(?!hello)。)*/m)'](https://ideone.com/EdxdrH),但我仍然相信「分裂」是正確的。 –
這不會區分「hello」和「helloween」。它也不允許字符串以「hello」以外的任何字符開頭(例如「say hello ...」)。除了這個例子之外,OP對這種可能性是無聲的,但是在使用'scan'時這不會成爲問題。 –
@Cary添加單詞邊界不是火箭科學。我們的解決方案足夠靈活,可以適應任何進一步的需求 –
這是沒有正則表達式的替代方案。它採用slice_before
:
"hello foo-1 hello bar $4 hello".split.slice_before("hello").map{|words| words.join(' ')}
# => ["hello foo-1", "hello bar $4", "hello"]
"hello helloween hello halloween".split.slice_before("hello").map{|words| words.join(' ')}
# => ["hello helloween", "hello halloween"]
我上面的評論也適用於此處。 –
@CarySwoveland我不確定它的確如此:''hello helloween hello halloween「.split.slice_before(」hello「)。map {| words | words.join('')}''''「hello helloween」,「hello halloween」]' –
@CarySwoveland:至於「打個招呼」,這是任何分隔符的問題。你需要以某種方式逃避它。 –
'你好\ S + * |'https://regex101.com/r/OCbf83/1 –
@AvinashRaj,請做出回答。?(=你好$?)。 –