package main

import (

"fmt"

"regexp"

)

func main() {

/*

Golang正则模块的使用

*/

text := "hello 10 world 11 hello"

// 1.获取正则对象

reg, _ := regexp.Compile(`\d+`) // 匹配数字 MustCompile()匹配不到会报错

// 2.匹配检测,检测是否匹配到字符串

fmt.Println(reg.MatchString(text))

// 3.查找字符

fmt.Println(reg.FindAllString(text, 2)) // 参数2表示匹配的个数

// 4.查找匹配字符索引

fmt.Println(reg.FindStringIndex(text)) // 查看所有匹配字符的索引

// 5.查找匹配子模式

re := regexp.MustCompile(`e(\w+)`)

fmt.Println(re.FindAllStringSubmatch(text, -1)) // [[ello llo] [ello llo]]所有匹配对象以及子字符串

// 6.替换

fmt.Println(re.ReplaceAllString(text, "kela$1")) // 将所有匹配字符替换成参数2,$1可以引用子字符的内容

/*

正则匹配语法

正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为"元字符")构成的文字序列,可以是单个的字符、字符集合、字符范围、字符间的选择或者所有这些组件的任意组合。

下面的表格中列举了构成正则表达式的一些语法规则及其含义。

1) 字符

语法说明表达式示例匹配结果

一般字符匹配自身abcabc

.匹配任意除换行符"\n"外的字符, 在 DOTALL 模式中也能匹配换行符a.cabc

\转义字符,使后一个字符改变原来的意思;

如果字符串中有字符 * 需要匹配,可以使用 \* 或者字符集[*]。a\.c

a\\ca.c

a\c

[...]字符集(字符类),对应的位置可以是字符集中任意字符。

字符集中的字符可以逐个列出,也可以给出范围,如 [abc] 或 [a-c],

第一个字符如果是 ^ 则表示取反,如 [^abc] 表示除了abc之外的其他字符。a[bcd]eabe 或 ace 或 ade

\d数字:[0-9]a\dca1c

\D非数字:[^\d]a\Dcabc

\s空白字符:[\t\r\n\f\v]a\sca c

\S非空白字符:[^\s]a\Scabc

\w单词字符:[A-Za-z0-9]a\wcabc

\W非单词字符:[^\w]a\Wca c

2) 数量词(用在字符或 (...) 之后)

语法说明表达式示例匹配结果

*匹配前一个字符 0 或无限次abc*ab 或 abccc

+匹配前一个字符 1 次或无限次abc+abc 或 abccc

?匹配前一个字符 0 次或 1 次abc?ab 或 abc

{m}匹配前一个字符 m 次ab{2}cabbc

{m,n}匹配前一个字符 m 至 n 次,m 和 n 可以省略,若省略 m,则匹配 0 至 n 次;

若省略 n,则匹配 m 至无限次ab{1,2}cabc 或 abbc

3) 边界匹配

语法说明表达式示例匹配结果

^匹配字符串开头,在多行模式中匹配每一行的开头^abcabc

$匹配字符串末尾,在多行模式中匹配每一行的末尾abc$abc

\A仅匹配字符串开头\Aabcabc

\Z仅匹配字符串末尾abc\Zabc

\b匹配 \w 和 \W 之间a\b!bca!bc

\B[^\b]a\Bbcabc

4) 逻辑、分组

语法说明表达式示例匹配结果

|| 代表左右表达式任意匹配一个,优先匹配左边的表达式abc|defabc 或 def

(...)括起来的表达式将作为分组,分组将作为一个整体,可以后接数量词(abc){2}abcabc

(?P...)分组,功能与 (...) 相同,但会指定一个额外的别名(?Pabc){2}abcabc

\引用编号为 的分组匹配到的字符串(\d)abc\11abe1 或 5abc5

(?P=name)引用别名为 的分组匹配到的字符串(?P\d)abc(?P=id)1abe1 或 5abc5

5) 特殊构造(不作为分组)

语法说明表达式示例匹配结果

(?:...)(…) 的不分组版本,用于使用 "|" 或后接数量词(?:abc){2}abcabc

(?iLmsux)iLmsux 中的每个字符代表一种匹配模式,只能用在正则表达式的开头,可选多个(?i)abcAbC

(?#...)# 后的内容将作为注释被忽略。abc(?#comment)123 abc123

(?=...)之后的字符串内容需要匹配表达式才能成功匹配a(?=\d)后面是数字的 a

(?!...)之后的字符串内容需要不匹配表达式才能成功匹配a(?!\d)后面不是数字的 a

(?<=...)之前的字符串内容需要匹配表达式才能成功匹配(?<=\d)a前面是数字的a

(?

*/

}

go的string正则匹配_Go正则匹配 regexp | Go相关推荐

  1. python3 匹配空格 正则_玩转正则表达式

    一.什么是正则表达式 在介绍正则表达式前,我们需要树立一个概念:所有内容本质上都是一个字符,比如我们书写的文字就是一连串字符组成的字符串:比如字母,数字,标点符号和其他符号等等. 正则表达式(Regu ...

  2. php正则匹配sg-nc-wap_php正则匹配

    概述 正则表达式是一种描述字符串结果的语法规则,是一个特定的格式化模式,可以匹配.替换.截取匹配的字符串.常用的语言基本上都有正则表达式,如JavaScript.java等.其实,只有了解一种语言的正 ...

  3. js 正则学习小记之匹配字符串

    原文:js 正则学习小记之匹配字符串 今天看了第5章几个例子,有点收获,记录下来当作回顾也当作分享. 关于匹配字符串问题,有很多种类型,今天讨论 js 代码里的字符串匹配.(因为我想学完之后写个语法高 ...

  4. php 正则 回溯,PHP正则匹配绕过

    之前没有从机制上去了解过PHP正则匹配绕过具体是怎么一回事,于是主动去网上找了一些资料来加深理解 NFA与正则表达式 常见的正则引擎,被细分为DFA(确定性有限状态自动机)与NFA(非确定性有限状态自 ...

  5. mysql 替换非中文_mysql中的正则操作 匹配手机号,匹配中文,替换

    mysql中的正则操作 匹配手机号,匹配中文,替换 正则匹配hy_user表内tel字段的电话号码: SELECT * FROM hy_user WHERE tel REGEXP "[1][ ...

  6. js 对一个字段去重_js正则去重及(?=)的匹配规则

    今天首先要讲的是如何利用正则去重复,例如有一串字符串'122345333',如何去其中的重复元素? var str='122345333'; while((str!=(str=str.replace( ...

  7. python正则_python中正则匹配

    写代码时候,不管是爬虫,还是获取某些特定的资源,我们需要写正则表达式. 因为不常用,有些语法生疏.有时明明觉得自己的语法可以,可就是不行. 正则表达式是一种文本模式,包括普通字符(例如,a 到 z 之 ...

  8. java 正则 惰性匹配_js正则表达式惰性匹配和贪婪匹配用法分析

    本文实例讲述了js正则表达式惰性匹配和贪婪匹配用法.分享给大家供大家参考,具体如下: 在讲贪婪模式和惰性模式之前,先回顾一下JS正则基础: 写法基础: ①不需要双引号,直接用//包含 => /w ...

  9. php正则匹配是否为url地址,php正则匹配网址-正则php-php正则匹配url地址

    php正则表达式 正则匹配网址是否带http:// https:// if(preg_match("/\x20*https?\:\/\/.*/i","",$m) ...

  10. ES第十三天-扩展查询-前缀匹配、通配符查询、正则查询、模糊匹配、句子前缀匹配

    前言 ES的无论什么搜索,对于text类型字段其实都是基于倒排索引去进行搜索的,也就是进行分词后的,因此如果想像传统数据库一样的模糊匹配,一般可以使用它的keyword进行搜索.(keyword不会被 ...

最新文章

  1. 到底是先更新数据库还是先更新缓存?
  2. SpringCloud学习(七)高可用的分布式配置中心(Spring Cloud Config)(Finchley版本)
  3. python File 内置 open()方法(打开文件)
  4. ABPZero系列教程之拼多多卖家工具
  5. 7-16 一元多项式求导 (20 分)(详解+题目分析)
  6. Linux inode 详解
  7. CCNA初认识——链路捆绑命令
  8. matlab quiver 箭头颜色,matlab – quiver3箭头颜色对应大小
  9. POJ训练计划3096_Surprising Strings(STL/map)
  10. 打开计算机显示远程控制,win7系统远程协助怎么打开?开启远程协助功能教程...
  11. MacOS制作ubuntu18.04系统U盘启动盘
  12. 京东商品详情数据接口(APP端,H5端),实时了解商品价格走势,接口代码教程
  13. Mac电脑如何通过终端隐藏应用程序?
  14. 【图文】实操更换系统盘
  15. c语言 取余 % 和除法 / 的应用技巧 (在取位数方面的)
  16. 网易传媒计算机视觉算法实习生面试总结
  17. 日本一网友买煤炭自杀
  18. python智慧树章节答案_智慧树_Python程序设计基础_章节答案
  19. PIC18F45K80单片机串口调试总结
  20. 发票识别的全新自动化识别管理

热门文章

  1. run (简单DP)
  2. 绝对路径与相对路径cd命令的使用
  3. Emoji表情符号在MySQL数据库中的存储
  4. CGI + FastCGI(PHP-FPM)联系与区别 【图解 + 注释】
  5. 一次完整的HTTP事务是怎样一个过程?(转)
  6. Xcode6在10.9.4上面crash解决
  7. 关于 Profile
  8. 【OpenCV学习笔记】【函数学习】十四(cvSeq的用法说明(功能很多,按照需求使用))
  9. 从零基础入门Tensorflow2.0 ----五、25TF1.0自定义estimator
  10. Panoply软件安装