zoukankan      html  css  js  c++  java
  • 小白学正则表达式之 regexp


    1. 正则表达式介绍

    正则表达式是程序文本处理常用的模板模式,按照解析正则表达式的引擎可将正则表达式分为 POSIX 基础正则表达式(Basic regular expression,BRE) 引擎和 POSIX 扩展正则表达式(extended regular expression,ERE) 引擎。

    2. BRE 引擎

    2.1 纯文本匹配和特殊字符

    正则表达式中特殊字符转换为文本需要加反斜杠 \。

    2.2 锚字符

    锚字符可以锁定数据流的行首和行尾。其中,脱字符 ^ 锁定行首,美元符 $ 锁定行尾。

    2.3 点号字符

    点号字符匹配数据流中的任意单个字符。

    2.4 字符组

    字符组使用 [ ] 表示,匹配文本模式中某个位置的一组字符。如 [Yy] 匹配数据流中包含 Y 或 y 的任意单个字符。

    2.4.1 区间

    区间使用 - 表示,如 [a-z] 匹配数据流中包括从 a 到 z 之间任意单个字符。

    2.4.2 排除型字符组

    排除型字符组在字符前加脱字符用于排除匹配的字符组。如 [^a-z] 匹配不属于 a 到 z 之间的数据流。

    2.5 星号

    在字符/字符组后加星号,表示该字符可出现 0 次或多次。如 [a-z]*表明数据流中 a 到 z 的字符可出现 0 次到多次。

    3. ERE 引擎

    3.1 问号

    问号类似于星号,表示字符可出现 0 次或 1 次。

    4. Go 正则表达式 regexp 包

    4.1 MatchString

    //MatchString reports whether the string s contains any match of the regular expression pattern. More complicated queries need 
    //to use Compile and the full Regexp interface.
    
    func MatchString(pattern string, s string) (matched bool, err error)
    

    4.2 MustCompile

    //MustCompile is like Compile but panics if the expression cannot be parsed. It simplifies safe initialization of global 
    //variables holding compiled regular expressions.
    
    func MustCompile(str string) *Regexp
    

    4.3 FindString

    func (re *Regexp) FindString(s string) string
    

    example:

    package main
    
    import (
    	"fmt"
    	"regexp"
    )
    
    func main() {
    	re := regexp.MustCompile(`foo.?`)
    	fmt.Printf("%q\n", re.FindString("seafood fool"))
    	fmt.Printf("%q\n", re.FindString("meat"))
    }
    

    结合 MustCompile 和 FindString 的示例:

    status := regexp.MustCompile(string(ProcessRegexPattern)).FindString(string(status))
    

    芝兰生于空谷,不以无人而不芳。
  • 相关阅读:
    docker-compose 使用
    mysql UNIX时间戳与日期的相互转换 查询表信息
    mysql查看表结构命令
    PostgreSQL新手入门
    ibdata1是?
    ubuntu 12.04 安装 nginx+php+mysql web服务器
    读懂IL代码就这么简单(二)
    读懂IL代码就这么简单(一)
    在Ubuntu Linux下怎样安装QQ
    jQuery 选择器
  • 原文地址:https://www.cnblogs.com/xingzheanan/p/15645086.html
Copyright © 2011-2022 走看看