我想查看兩次相同模式的字符串。只有當加入「和」,但我似乎不能拉的第二場比賽正確需要改進紅寶石正則表達式
ruby-1.9.2-p290 :040 > text
=> "start a week and 2 days"
ruby-1.9.2-p290 :041 > text.scan /[a\d] weeks?|months?|years? and [a\d] weeks?|months?|days?/
=> ["a week", "days"]
我不明白,爲什麼第二場比賽是「天」,而不是「2天」
如果我交換「a」和「2」,然後第二場比賽仍然排除那個角色。
任何幫助大量讚賞!
爲了澄清我的算法將是
如果字符串包含X單元和y單位然後 做一些X單元, 做一些y單位 結束
我我也試過
ruby-1.9.2-p290 :054 > text.scan /[a|\d] (weeks?|months?|years?) and [a|\d] (weeks?|months?|days?)/
=> [["week", "days"]]
ruby-1.9.2-p290 :055 > text.scan /([a|\d] weeks?|months?|years?) and ([a|\d] weeks?|months?|days?)/
=> []
作爲一個實驗我嘗試在改進簡化沒有成功的模式
ruby-1.9.2-p290 :059 > text = "2 weeks and a day"
=> "2 weeks and a day"
ruby-1.9.2-p290 :060 > text.scan /[a|\d] weeks?|months?|years?|days?/
=> ["2 weeks", "day"]
ruby-1.9.2-p290 :061 > text = "a week and 2 days"
=> "a week and 2 days"
ruby-1.9.2-p290 :062 > text.scan /[a|\d] weeks?|months?|years?|days?/
=> ["a week", "days"]
感謝所有誰貢獻......
/([a\d] years?|[a\d] months?|[a\d] weeks?) and ([a\d] days?|[a\d] weeks?|[a\d] months?)/
符合我的要求,但我肯定會有興趣知道它是否可以縮小尺寸...
ruby-1.9.2-p290 :077 > text = "2 weeks and a day"
=> "2 weeks and a day"
ruby-1.9.2-p290 :078 > text.scan /([a\d] years?|[a\d] months?|[a\d] weeks?) and ([a\d] days?|[a\d] weeks?|[a\d] months?)/
=> [["2 weeks", "a day"]]
ruby-1.9.2-p290 :079 > text = "2 weeks 2 days"
=> "2 weeks 2 days"
ruby-1.9.2-p290 :080 > text.scan /([a\d] years?|[a\d] months?|[a\d] weeks?) teand ([a\d] days?|[a\d] weeks?|[a\d] months?)/
=> []
字符類'[a | \ d]'匹配任何字符'a',文字'''或數字。在字符類內部,您不需要使用'|'進行替換。在字符類之外,您需要指定在哪個級別使用括號進行交替。 '/ this an |並且/'匹配''這個''''或'「和那個'',而'/ this(?:an |和)/''匹配''這個和''或'」this和那個「'。 – Phrogz
我很困惑,我的答案被刪除,並轉移到問題中,因爲「這是一個問答網站,而不是新聞組或討論論壇,它可以通過某人提出問題,然後人們可以發佈問題的答案通過在「您的答案」區域輸入內容,您的帖子不是對所問問題的答案(即使您是提問者),也不應該顯示爲一個問題。「這絕對是答案 - 下面的人和Phrogz的貢獻幫助我解決了問題... –
你問了一個問題。你有1-2個答案(據我所知)正確並完全解答了你的問題。此時適當的步驟是將其中一個答案標記爲已接受。如果您有其他問題,請將其作爲一個新問題發佈。重新張貼正確的答案作爲自己的答案,並提出一個新問題並不是繼續討論的正確方法。 (這不是一個嚴格的政策遵守問題,而是確保該網站充滿了可以幫助他人的具體QA。)如果您只有一個較小的後續問題,您可以將其作爲評論發佈並寄予希望。 – Phrogz