我想這將是一個愚蠢的錯誤,但對我來說,以下返回一個只包含「M」的數組。看到這個:Ruby正則表達式,只有一個捕獲(非常簡單!)
/(.)+?/.match("Many many characters!").captures
=> ["M"]
爲什麼不返回每個字符的數組?我一定錯過了明顯的東西,因爲我看不出這有什麼問題?
編輯:剛纔意識到,我不需要+?但如果沒有它,它仍然不起作用。
編輯:道歉!我將闡明:我的目標是允許用戶輸入正則表達式和樣式以及輸入文本文件,只要有匹配,文本將被一個html元素包圍,樣式將被應用,我不只是將字符串轉換成字符,我只使用給定的正則表達式,因爲它是最簡單的,儘管這是我的愚蠢。如何從scan()獲取捕獲組或者不可能?我看到$ 1包含「!」 (最後一場比賽?),而不是其他人。
編輯:天哪,這真的不是我的一天。正如injekt告訴我的那樣,捕獲被存儲在單獨的數組中。我如何從原始字符串中獲取這些捕獲的偏移量?我希望能夠獲得捕獲的偏移量,然後用另一個字符串包圍它。或者,這是什麼gsub? (我以爲只有更換了比賽,不是一個捕獲組)
希望最終編輯:權,讓我重新開始這個:P
所以,我有一個字符串。用戶將使用配置文件輸入正則表達式,然後使用與每個捕獲組關聯的樣式。我需要能夠掃描整個字符串並獲取每個組匹配的開始和結束或偏移量和大小。
因此,如果用戶已經配置了([\w-\.]+)@((?:[\w]+\.)+)([a-zA-Z]{2,4})
(電子郵件地址),那麼我應該能夠得到:
[ ["elliotpotts", 0, 11],
["sample.", 12, 7],
["com", 19, 3] ]
從字符串: 「[email protected]」
如果不是很明顯,我只是有些問題:P。非常感謝你們,感謝你的耐心等待!
我剛剛看到你的編輯,掃描的捕獲組存儲在單獨的數組中,只是嘗試你的正則表達式和在irb中的測試字符串,你會看到。答案仍然與您的編輯相同 –
剛看到您的下一次編輯,您將不得不更新更多的信息。我現在有點困惑:P隨時拋出一個更完整的例子,無論它是如何做作,所以我們確切地知道你需要提取什麼 –
好吧,用你最新的編輯更新我的答案。我現在有點時間了,所以這只是完整的解決方案,沒有解釋,讓我知道如果它沒有意義,我會更新它 –