Text.Regex.PCRE.Heavy

$ brew install pcre
$ cabal install pcre-heavy
Installed pcre-heavy-1.0.0.2
Prelude> :m +Text.Regex.PCRE.Heavy
Prelude Text.Regex.PCRE.Heavy>
Prelude Text.Regex.PCRE.Heavy> :set -XQuasiQuotes
Prelude Text.Regex.PCRE.Heavy> :set -XFlexibleContexts
Prelude Text.Regex.PCRE.Heavy> "123-4567-89" =~ [re|\d{3}-(\d{4})-\d{2}|]
True
Prelude Text.Regex.PCRE.Heavy> scan [re|\d{3}-(\d{4})-\d{2}|] "123-4567-89"
[("123-4567-89",["4567"])]
Prelude Text.Regex.PCRE.Heavy> scanRanges [re|\d{3}-(\d{4})-\d{2}|] "123-4567-89"
[((0,11),[(4,8)])]
Prelude Text.Regex.PCRE.Heavy> sub [re|(\d+)-(\d+)-(\d+)|] (\(d1:d2:d3:_) -> d3 ++ "-" ++ d1 ++ "-" ++ d2) "123-4567-89"
"89-123-4567"
Prelude Text.Regex.PCRE.Heavy> :set -XScopedTypeVariables
Prelude Text.Regex.PCRE.Heavy> sub [re|\d+|] (\(s::String) -> reverse s) "123-4567-89"
"321-4567-89"
Prelude Text.Regex.PCRE.Heavy> gsub [re|\d+|] (\(s::String) -> reverse s) "123-4567-89"
"321-7654-98"
Prelude Text.Regex.PCRE.Heavy> split [re|%(begin|next|end)%|] ("%begin%hello%next%world%end%" :: String)
["","hello","world",""]
  • (=~) :: (ConvertibleStrings SBS a, ConvertibleStrings a SBS) => a -> Regex -> Bool

    (=~) 操作符函数检查字符串是否匹配指定正则表达式。
  • scan :: (ConvertibleStrings SBS a, ConvertibleStrings a SBS) => Regex -> a -> [(a, [a])]

    scan 函数查找并返回字符串中所有出现的指定正则表达式。
  • scanRanges :: (ConvertibleStrings SBS a, ConvertibleStrings a SBS) => Regex -> a -> [((Int, Int), [(Int, Int)])]

    scanRanges 函数查找字符串中所有出现的指定正则表达式,返回出现的所有位置。
  • sub :: (ConvertibleStrings SBS a, ConvertibleStrings a SBS, RegexReplacement r) => Regex -> r -> a -> a

    sub 函数替换字符串中第一次出现的指定正则表达式。
  • gsub :: (ConvertibleStrings SBS a, ConvertibleStrings a SBS, RegexReplacement r) => Regex -> r -> a -> a

    gsub 函数替换字符串中所有出现的指定正则表达式。
  • split :: (ConvertibleStrings SBS a, ConvertibleStrings a SBS) => Regex -> a -> [a]

    split 函数使用指定正则表达式分割字符串。

Haskell语言学习笔记(52)正则表达式的更多相关文章

  1. Haskell语言学习笔记(88)语言扩展(1)

    ExistentialQuantification {-# LANGUAGE ExistentialQuantification #-} 存在类型专用的语言扩展 Haskell语言学习笔记(73)Ex ...

  2. Haskell语言学习笔记(79)lambda演算

    lambda演算 根据维基百科,lambda演算(英语:lambda calculus,λ-calculus)是一套从数学逻辑中发展,以变量绑定和替换的规则,来研究函数如何抽象化定义.函数如何被应用以 ...

  3. Haskell语言学习笔记(69)Yesod

    Yesod Yesod 是一个使用 Haskell 语言的 Web 框架. 安装 Yesod 首先更新 Haskell Platform 到最新版 (Yesod 依赖的库非常多,版本不一致的话很容易安 ...

  4. Haskell语言学习笔记(20)IORef, STRef

    IORef 一个在IO monad中使用变量的类型. 函数 参数 功能 newIORef 值 新建带初值的引用 readIORef 引用 读取引用的值 writeIORef 引用和值 设置引用的值 m ...

  5. Haskell语言学习笔记(39)Category

    Category class Category cat where id :: cat a a (.) :: cat b c -> cat a b -> cat a c instance ...

  6. Haskell语言学习笔记(72)Free Monad

    安装 free 包 $ cabal install free Installed free-5.0.2 Free Monad data Free f a = Pure a | Free (f (Fre ...

  7. Haskell语言学习笔记(44)Lens(2)

    自定义 Lens 和 Isos -- Some of the examples in this chapter require a few GHC extensions: -- TemplateHas ...

  8. Haskell语言学习笔记(38)Lens(1)

    Lens Lens是一个接近语言级别的库,使用它可以方便的读取,设置,修改一个大的数据结构中某一部分的值. view, over, set Prelude> :m +Control.Lens P ...

  9. Haskell语言学习笔记(92)HXT

    HXT The Haskell XML Toolbox (hxt) 是一个解析 XML 的库. $ cabal install hxt Installed hxt-9.3.1.16 Prelude&g ...

随机推荐

  1. MapReduce-朴素贝叶斯

    朴素贝叶斯(Native Bayes),贝叶斯在现实使用中是怎么玩的?不是根据A|B的概率获得B|A的概率,在现实中的玩法是: 首先要明白贝叶斯是一种分类算法,因为是概率所以,他的应用领域其实是比较, ...

  2. bzoj 3611(洛谷 4103) [Heoi2014]大工程——虚树

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3611 https://www.luogu.org/problemnew/show/P4103 ...

  3. POJ1742Coins

    题目:http://poj.org/problem?id=1742 可以正常地多重背包.但是看了<算法竞赛入门经典>,收获了贪心的好方法. 因为这里只需知道是否可行,不需更新出最优值之类的 ...

  4. JZ2440 裸机驱动 第13章 LCD控制器(2)

    13.2 TFT LCD显示实例 13.2.1 程序设计     本实例的目的是从串口输出一个菜单,从中选择各种方法进行测试,比如画线. 画圆.显示单色.使用调色板等. 13.2.2代码详解     ...

  5. github 改位置

    在设置里改位置后,先在本地库上右键"stop track this repo". 然后在在线库重新CLONE.

  6. apache-cxf-2.6.3 spring集成配置

    apache-cxf-2.6.3 <?xml version="1.0" encoding="UTF-8"?><beans xmlns=&qu ...

  7. 创建一个包括菜单栏,工具栏,状态栏,文本编辑部件的经典GUI应用程序的骨架

    效果如下: 代码如下: #!/usr/bin/python3 # -*- coding: utf-8 -*- """ This program creates a ske ...

  8. 【spring框架】spring获取webapplicationcontext,applicationcontext几种方法详解--(转)

    方法一:在初始化时保存ApplicationContext对象代码:ApplicationContext ac = new FileSystemXmlApplicationContext(" ...

  9. Linux 简单命令查询CPU、内存、网卡等信息

    [转自]Linux查询CPU.内存.网卡等信息 看CPU信息(型号)# cat /proc/cpuinfo | grep name | cut -f2 -d: |uniq -c      1  Int ...

  10. jQuery的selector和context属性

    从jQuery1.3开始添加了这2个属性. 现在我们来看看那这2个属性的用法. selector属性是一个字符串.存储的字符串是选择器. HTML代码: <div class="guo ...