packages feed

lens-regex-0.1.0: sample/sample.hs

{-# LANGUAGE QuasiQuotes #-}

{-

OUTPUT:

##################
## Target String:
target1 = "hoge00 fuga hoge01 neko hoge02"

## Example: target1 ^.. regex [r|hoge[0-9]+|]
[MatchPart {_matchedString = "hoge00", _captures = []},MatchPart {_matchedString = "hoge01", _captures = []},MatchPart {_matchedString = "hoge02", _captures = []}]

## Example: target1 ^.. regex [r|hoge[0-9]+|] . matchedString
["hoge00","hoge01","hoge02"]

## Example: target1 ^? regex [r|hoge[0-9]+|] . index 1 . matchedString
Just "hoge01"

## Example: target1 ^? regex [r|hoge[0-9]+|] . index 3 . matchedString
Nothing

## Example: target1 & regex [r|hoge[0-9]+|] . matchedString .~ "HOGE"
"HOGE fuga HOGE neko HOGE"

## Example: target1 & regex [r|hoge[0-9]+|] .index 1 . matchedString .~ "HOGE"
"hoge00 fuga HOGE neko hoge02"

## Example: target1 & regex [r|hoge[0-9]+|] .index 1 . matchedString %~ (\s -> "<<" ++ s ++ ">>")
"hoge00 fuga <<hoge01>> neko hoge02"
##################
## Target String:
target2 = "<img src=\"/image/shinku0721.jpg\" alt=\"shinku birthday\"><img src=\"/image/shinku141.jpg\">"

## Example: target2 ^.. regex [r|<img src="([^"]+)"[^>]*>|] . captures . traversed . index 0
["/image/shinku0721.jpg","/image/shinku141.jpg"]

-}

module Main where

import Control.Lens
import Text.Regex.Lens
import Text.Regex.Posix
import Text.Regex.Quote

main :: IO ()
main = do
    let target1 = "hoge00 fuga hoge01 neko hoge02"
    putStrLn "##################"
    putStrLn "## Target String:"
    putStrLn $ "target1 = " ++ show target1

    putStrLn "\n## Example: target1 ^.. regex [r|hoge[0-9]+|]"
    print $ target1 ^.. regex [r|hoge[0-9]+|]

    putStrLn "\n## Example: target1 ^.. regex [r|hoge[0-9]+|] . matchedString"
    print $ target1 ^.. regex [r|hoge[0-9]+|] . matchedString

    putStrLn "\n## Example: target1 ^? regex [r|hoge[0-9]+|] . index 1 . matchedString"
    print $ target1 ^? regex [r|hoge[0-9]+|] . index 1 . matchedString

    putStrLn "\n## Example: target1 ^? regex [r|hoge[0-9]+|] . index 3 . matchedString"
    print $ target1 ^? regex [r|hoge[0-9]+|] . index 3 . matchedString

    putStrLn "\n## Example: target1 & regex [r|hoge[0-9]+|] . matchedString .~ \"HOGE\""
    print $ target1 & regex [r|hoge[0-9]+|] . matchedString .~ "HOGE"

    putStrLn "\n## Example: target1 & regex [r|hoge[0-9]+|] .index 1 . matchedString .~ \"HOGE\""
    print $ target1 & regex [r|hoge[0-9]+|] . index 1 . matchedString .~ "HOGE"

    putStrLn "\n## Example: target1 & regex [r|hoge[0-9]+|] .index 1 . matchedString %~ (\\s -> \"<<\" ++ s ++ \">>\")"
    print $ target1 & regex [r|hoge[0-9]+|] . index 1 . matchedString %~ (\s -> "<<" ++ s ++ ">>")

    let target2 = "<img src=\"/image/shinku0721.jpg\" alt=\"shinku birthday\"><img src=\"/image/shinku141.jpg\">"
    putStrLn "##################"
    putStrLn "## Target String:"
    putStrLn $ "target2 = " ++ show target2

    putStrLn "\n## Example: target2 ^.. regex [r|<img src=\"([^\"]+)\"[^>]*>|] . captures . traversed . index 0"
    print $ target2 ^.. regex [r|<img src="([^"]+)"[^>]*>|] . captures . traversed . index 0