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))

小白学正则表达式之 regexp的更多相关文章

  1. 小白学 Python 爬虫(9):爬虫基础

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  2. 小白学 Python 爬虫(22):解析库 Beautiful Soup(下)

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  3. 小白学 Python 爬虫(35):爬虫框架 Scrapy 入门基础(三) Selector 选择器

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  4. 第十四章 web前端开发小白学爬虫

    老猿从事IT开发快三十年了,接触互联网也很久了,但自己没有做过web前端开发,只知道与前端开发相关的一些基本概念,如B/S架构.html标签.js脚本.css样式.xml解析.cookies.http ...

  5. 小白学Docker之Compose

    承接上篇文章:小白学Docker之基础篇,自学网站来源于https://docs.docker.com/get-started 概念 Compose是一个编排和运行多容器Docker应用的工具,主要是 ...

  6. 小白学Docker之Swarm

    承接上篇文章:小白学Docker之Compose,自学网站来源于https://docs.docker.com/get-started 系列文章: 小白学Docker之基础篇 小白学Docker之Co ...

  7. 小白学Docker之基础篇

    系列文章: 小白学Docker之基础篇 小白学Docker之Compose 小白学Docker之Swarm PS: 以下是个人作为新手小白学习docker的笔记总结 1. docker是什么 百科上的 ...

  8. 小白学react之网页获取微信用户信息

    通过上一篇<小白学react之EJS模版实战>我们学习了怎样通过EJS模版生成我们高定制化的index.html文件. 本篇我们将会继续延续我们的alt-tutorial项目的实战计划.去 ...

  9. 【JVM从小白学成大佬】3.深入解析强引用、软引用、弱引用、幻象引用

    关于强引用.软引用.弱引用.幻象引用的区别,在很多公司的面试题中经常出现,可能有些小伙伴觉得这个知识点比较冷门,但其实大家在开发中经常用到,如new一个对象的时候就是强引用的应用. 在java语言中, ...

  10. 【JVM从小白学成大佬】6.创建对象及对象的访问定位

    <JVM从小白学成大佬>系列推出到现在,收到了很多小伙伴的好评,也收到了一些小伙伴的建议,在此表示感谢. 有几个小伙伴提出了希望出一篇介绍对象的创建及访问,猿人谷向来是没有原则的,小伙们要 ...

随机推荐

  1. K8s 里如何优雅地使用 /dev/shm 实现容器间共享内存

    目录 1. 从 docker run 的 --shm-size 参数聊起 2. Linux 里的 /dev/shm 3. Docker 对共享内存的支持 4. K8s 里如何设置 /dev/shm 大 ...

  2. C#如何对List中的Object进行排序

    首先定义一个List类,这个类里面包含了Name和Total两个属性变量,下面就是针对这两个变量进行排序. public class Player { public string Name { get ...

  3. 聊聊流式数据湖Paimon(四)

    Partial Update 数据打宽 通过不同的流写不同的字段,打宽了数据的维度,填充了数据内容:如下所示: --FlinkSQL参数设置 set `table.dynamic-table-opti ...

  4. 【C# 技术】C# 常用排序方式

     前言  在最近的项目中经常会对C#中的数据进行排序,对于基本数据类型,其排序方式比较简单,只需要调用内置算法即可实现,但对于自定义数据类型以及自定义排序规则的情况实现起来就比较麻烦,所以在本文章中将 ...

  5. Pikachu漏洞靶场 File Inclusion(文件包含漏洞)

    File Inclusion(文件包含漏洞) 本地文件包含 url: 192.168.171.30/pikachu/vul/fileinclude/fi_local.php?filename=file ...

  6. flex布局之美,以后就靠它来布局了

    写在前面 在很久很久以前,网页布局基本上通过table 元素来实现.通过操作table 中单元格的align 和valign可以实现水平垂直居中等 再后来,由于CSS 不断完善,便演变出了:标准文档流 ...

  7. 超详细的jQuery的 DOM操作,一篇就足够!

    摘要:今天来和大家分享有关jQuery框架中DOM操作的相关技术,又是一个堪称DOM"全家桶"系列的讲解,建议收藏关注认真学习! 本文分享自华为云社区<[JQuery框架]超 ...

  8. 一次事故,我对MySQL时间戳存char(10)还是int(10)有了全新的认识

    摘要:char类型字段想走索引的话,必须用引号括起来.如果是时间戳等类型的纯数字,建议还是存为int型吧. 本文分享自华为云社区<一次事故,我对MySql时间戳存char(10)还是int(10 ...

  9. Git工作流中常见的三种分支策略:GitFlow、GitHubFlow和GitLabFlow

    摘要:聊一聊Git中的工作流--分支策略. 本文分享自华为云社区<Git工作流中常见的三种分支策略:GitFlow.GitHubFlow以及GitLabFlow>,原文作者:敏捷的小智. ...

  10. Intellij IDEA、 Pycharm 格式化换行,竖线修改 最大 分隔 线

    Intellij IDEA. Pycharm 等开发工具,超过 竖线,Ctrl + L 格式化时,就会换行 格式化后,现在的显示器分辨率高,这样右边一大片空白,看起来很不舒服 File -> S ...