2012-01-28 12 views
21

में regex का मैच, GHCi का उपयोग कर निम्न उपाय अपनाते हैंसभी (असली दुनिया हास्केल सहित) एक कर सकते हैं ट्यूटोरियल की एक संख्या के अनुसार हास्केल

ghci > :m Text.Regex.Posix 
ghci > "foo foo foo" =~ "foo" :: [String] 
["foo","foo","foo"] 

फिर भी, जब मैं इस प्रयास करते हैं, यह पैदावार

No instance for (RegexContext Regex [Char] [String]) 
    arising from a use of `=~' 
Possible fix: 
    add an instance declaration for 
    (RegexContext Regex [Char] [String]) 
In the expression: "abc" =~ "ab" :: [String] 
In an equation for `it': it = "abc" =~ "ab" :: [String] 

हैकेल में सभी मैचों की सूची प्राप्त करने का सही तरीका क्या है?

+2

[ "= के संभावित डुप्लिकेट ~ "raise" के लिए कोई उदाहरण नहीं (RegexContext Regex \ [Char \] \ [स्ट्रिंग \]) "] (http://stackoverflow.com/questions/7636447/raise-no-instance-for-regexcontext-regex-char- स्ट्रिंग) – ehird

उत्तर

23

regex पुस्तकालयों उनके अतिभारित वापसी प्रकार के साथ कुछ हद तक भ्रामक हो सकते हैं, लेकिन उदाहरण के लिए सभी मैचों तुम सिर्फ यह सुनिश्चित करें कि वापसी प्रकार AllTextMatches है की जरूरत है पाने के लिए,:

Prelude> :m + Text.Regex.Posix 
Prelude Text.Regex.Posix> getAllTextMatches $ "foo foo foo" =~ "foo" :: [String] 
["foo","foo","foo"] 
+0

अच्छा, यह काम करता है। धन्यवाद। क्या आपको कोई विचार है कि यह ट्यूटोरियल में क्यों उल्लेख नहीं किया जा रहा है? – archgoon

+8

आरडब्ल्यूएच बाहर आने के बाद से रेगेक्स इंटरफ़ेस अपडेट किया गया था। – ehird

+0

@ehird मुझे एक अद्यतित संदर्भ कहां मिल सकता है? – ApproachingDarknessFish

संबंधित मुद्दे