小白学正则表达式之 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))
小白学正则表达式之 regexp的更多相关文章
- 小白学 Python 爬虫(9):爬虫基础
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...
- 小白学 Python 爬虫(22):解析库 Beautiful Soup(下)
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...
- 小白学 Python 爬虫(35):爬虫框架 Scrapy 入门基础(三) Selector 选择器
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...
- 第十四章 web前端开发小白学爬虫
老猿从事IT开发快三十年了,接触互联网也很久了,但自己没有做过web前端开发,只知道与前端开发相关的一些基本概念,如B/S架构.html标签.js脚本.css样式.xml解析.cookies.http ...
- 小白学Docker之Compose
承接上篇文章:小白学Docker之基础篇,自学网站来源于https://docs.docker.com/get-started 概念 Compose是一个编排和运行多容器Docker应用的工具,主要是 ...
- 小白学Docker之Swarm
承接上篇文章:小白学Docker之Compose,自学网站来源于https://docs.docker.com/get-started 系列文章: 小白学Docker之基础篇 小白学Docker之Co ...
- 小白学Docker之基础篇
系列文章: 小白学Docker之基础篇 小白学Docker之Compose 小白学Docker之Swarm PS: 以下是个人作为新手小白学习docker的笔记总结 1. docker是什么 百科上的 ...
- 小白学react之网页获取微信用户信息
通过上一篇<小白学react之EJS模版实战>我们学习了怎样通过EJS模版生成我们高定制化的index.html文件. 本篇我们将会继续延续我们的alt-tutorial项目的实战计划.去 ...
- 【JVM从小白学成大佬】3.深入解析强引用、软引用、弱引用、幻象引用
关于强引用.软引用.弱引用.幻象引用的区别,在很多公司的面试题中经常出现,可能有些小伙伴觉得这个知识点比较冷门,但其实大家在开发中经常用到,如new一个对象的时候就是强引用的应用. 在java语言中, ...
- 【JVM从小白学成大佬】6.创建对象及对象的访问定位
<JVM从小白学成大佬>系列推出到现在,收到了很多小伙伴的好评,也收到了一些小伙伴的建议,在此表示感谢. 有几个小伙伴提出了希望出一篇介绍对象的创建及访问,猿人谷向来是没有原则的,小伙们要 ...
随机推荐
- 通过match看rust
最常见的逻辑控制流比如if-else,switch,while等常用编程语言都支持,但恰巧rust语法中没有switch,取而代之的是更加强大适用的match匹配,我们就来看看rust的match有何 ...
- 第一章 JavaEE应用和开发环境
1.1 java EE应用概述 1.java EE的分层模型 数据库--[提供持久化服务]-->Domain Object层 --[封装]--〉DAO层--[提供数据访问服务]-->业务逻 ...
- 【Python】【OpenCV】轮廓检测
Code: 1 import cv2 2 import numpy as np 3 4 img = np.zeros((200, 200), dtype=np.uint8) 5 img[50:150, ...
- Tomcat自动化脚本
/bin/bash war包名称 war_name="tchg.war" 要上传war包指定目录 war_dir="/usr/local/src/tchg" 工 ...
- 笔记本为什么不出可升级CPU的,用台式CPU不行吗?
我十几年年前的thinkpad 通过更换cpu复活了:联想ThinkPad E430c i3变i7:笔记本电脑CPU升级思路-CPU参数 为什么现在的市面上可以更换cpu的笔记本非常稀少呢? inte ...
- 斯坦福 UE4 C++ ActionRoguelike游戏实例教程 05.认识GameMode&自动生成AI角色
斯坦福课程 UE4 C++ ActionRoguelike游戏实例教程 0.绪论 概述 本篇文章将会讲述UE中Gamemode的基本概念,并在C++中开发GameMode,为游戏设置一个简单的玩法:使 ...
- maven系列:属性管理和版本管理
目录 一. 属性配置与使用 ①:定义属性 ②:引用属性 二. 资源文件引用属性 ①:定义属性 ②:配置文件中引用属性 ③:开启资源文件目录加载属性的过滤器 ④:配置maven打war包时,忽略web. ...
- 从相识到相惜:Redis与计算存储分离四部曲
摘要:协议兼容问题.性能问题.数据备份问题.数据容量问题--这些都是数据库在使用过程中必然会遇见的问题.就好比选择结婚对象,你需要去对比不同的方面,最后选出最好的.最合适的. 近期全国两会正在轰轰烈烈 ...
- 云图说|OLAP开源引擎的一匹黑马,MRS集群组件之ClickHouse
摘要:ClickHouse是俄罗斯公司Yandex在2016年开源的高性能.开源联机分析列式数据库管理系统.开源后,凭借卓越的分析性能.极好的线性扩展能力和丰富的功能,被业界公认为实时分析领域OLAP ...
- C++11实用特性3 --智能指针
1 智能指针 在C++中没有垃圾回收机制,必须自己释放分配的内存,否则就会造成内存泄露.解决这个问题最有效的方法是使用智能指针(smart pointer).智能指针是存储指向动态分配(堆)对象指针的 ...