package main;

import (
"regexp"
"fmt"
"strings"
) func main() {
//1、过正则来判断字符串是否匹配
if ok, _ := regexp.Match("^[0-9a-zA-Z_]+$", []byte("hello")); ok {
fmt.Println("ok");
} //上面的例子也可以通过MatchString实现
if ok, _ := regexp.MatchString("^[0-9a-zA-Z_]+$", "hello"); ok {
fmt.Println("ok");
} //2、解析正则表达式
//正则表达式如果合法,Compile会返回一个Regexp对象指针,通过该指针可以在任意字符串上进行操作
re, _ := regexp.Compile("[0-9a-zA-Z_]+"); //3、查找正则匹配的字符串
data := "I am a good man"; //Find函数返回匹配的第一个字符串
one := re.Find([]byte(data));
fmt.Println(string(one)); //FindAll函数返回匹配的所有字符串,n小于0返回全部字符串,否则返回指定长度
all := re.FindAll([]byte(data), 2);
//all为长度为2的slice
fmt.Println(string(all[0]));
fmt.Println(string(all[1])); //FindIndex查找匹配的开始位置和结束位置
ix := re.FindIndex([]byte(data));
fmt.Println(ix); //FindAllIndex查找所有匹配的开始位置和结束位置
//n小于0返回全部,否则返回指定长度
all_ix := re.FindAllIndex([]byte(data), -1);
fmt.Println(all_ix);
re2, _ := regexp.Compile("a(.*)g(.*)"); //FindSubmatch查找子匹配项
sub := re2.FindSubmatch([]byte(data));
//第一个匹配的是全部元素
fmt.Println(string(sub[0]));
//第二个匹配的是第一个()里面的
fmt.Println(string(sub[1]));
//第三个匹配的是第二个()里面的
fmt.Println(string(sub[2])); //FindAllSubmatch查找所有子匹配项
all_sub := re2.FindAllSubmatch([]byte(data), 2);
fmt.Println(string(all_sub[0][0]));
fmt.Println(string(all_sub[0][1])); //FindSubmatchIndex用于查找子匹配项的开始位置和结束位置
sub_ix := re2.FindSubmatchIndex([]byte(data));
fmt.Println(sub_ix); //FindAllSubmatchIndex查找所有子匹配项的开始位置和结束位置
//n小于0返回全部,否则返回指定长度
all_sub_ix := re2.FindAllSubmatchIndex([]byte(data), -1);
fmt.Println(all_sub_ix); //4、正则替换
//通过函数进行替换
re3, _ := regexp.Compile("a");
rep := re3.ReplaceAllStringFunc(data, strings.ToUpper);
fmt.Println(rep); //把匹配的所有字符a替换成b
rep2 := re3.ReplaceAllString(data, "b");
fmt.Println(rep2);
}

  

golang 常用的正则查找与替换的更多相关文章

  1. visual studio 使用正则查找或替换示例

    visual studio 使用正则查找或替换示例 注意哟:使用之前应做好备份 visual studio 2015: 多行替换 (.*)point\ =(.*);\r\n.+this.([A-Za- ...

  2. JS 正则查找与替换

    JS正则查找与替换 一.前提/背景 今天遇到个问题,需要替换字符串中部分字符,这些字符相对整个字符串而言,与其他子字符串类似,无法单独提出:重要的是,该字符串是动态的生成的,就像我们日常看到的网页Ur ...

  3. frontpage 正则 查找与替换

    frontpage正则查找替换 frontpage查找用{}[不是() ]来匹配pattern, 并获取这一匹配 替换时匹配的字符用\1 \2 \3表示 第 N 个标记表达式 \N 在“替换”表达式中 ...

  4. Vim 常用操作、查找和替换

    这篇文章来详细介绍 Vim 中查找相关的设置和使用方法. 包括查找与替换.查找光标所在词.高亮前景/背景色.切换高亮状态.大小写敏感查找等. 查找 在normal模式下按下/即可进入查找模式,输入要查 ...

  5. Notepad 列编辑、正则查找、替换

    目标: 将源数据转成初始化sql语句.源数据: 104110040018,1,中国银行,中国银行天津琼州道支行,NULL,1100,天津市,12,天津市 104110040059,1,中国银行,中国银 ...

  6. Vim常用匹配、查找、替换命令总结

    以前都是从头开始找,最近处理log文件很多. 在vim 中输入 :1?XXXX 1的意思是文件的第一行 ?的意思是反向查找 XXXX就是你要找的关键字 更新:Linux 从末尾开始查找日志 tac c ...

  7. Sublime_正则查找替换

    在sublime编辑器中使用正则表达式对内容进行查找和替换: (1)Find——Replace... (2)出现下图界面 注意:点击左边第一个按钮,开启正则表达式功能. (3) (4)点击Replac ...

  8. 在VS中用正则表达式查找或替换

    2005VS和2008VS正则替换规则如下(2013VS不适合,不需要的同学可以直接跳到2013VS的操作办法): Example: 查找#incldue中带有gl开头的头文件的,用include.+ ...

  9. JS利用正则配合replace替换指定字符

    替换指定字符的方法有很多,在本文为大家详细介绍下,JS利用正则配合replace是如何做到的,喜欢的朋友可以参考下 定义和用法 replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一 ...

随机推荐

  1. UNITY优化资料收集

    U3D手册: Optimizing garbage collection in Unity games https://zhuanlan.zhihu.com/p/25306993 https://gi ...

  2. Pycharm 字体大小快捷方式设置

    1.File->Settings 2.在搜索框搜索increase 点击Increase Font Size(增大字体)右键选择 Add Mouse Shortcut 然后按Ctrl并且鼠标滚轮 ...

  3. adb INSTALL_FAILED_UPDATE_INCOMPATIBLE

    今天用Eclipse运行项目时出错: LOG: [2018-05-09 14:16:19 - Module_Android_Demo] ------------------------------ [ ...

  4. LINUX系统一一CentOS6.5之安装JDK

    准备工作 1.在/usr/目录下创建java目录 [root@localhost ~]# mkdir/usr/local/java/jdk[root@localhost ~]# cd /usr/loc ...

  5. 在Centos 6.5 X64下切割m3u8

    操作系统:centos 6.5 必需要参考的文章: http://blog.chinaunix.net/uid-23069658-id-4018842.html 准备工作: 安装git yum ins ...

  6. CSS----盒子模型与浮动

     盒模型(框模型) 页面上任何一个元素我们都可以看成是一个盒子,盒子会占用一定的空间和位置他们之间相互制约,就形成了网页的布局 w3c的盒模型的构成:content border padding ma ...

  7. Java 中 synchronized的用法详解(四种用法)

    Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码.本文给大家介绍java中 synchronized的用法,对本文感兴趣的朋友一起看看吧 ...

  8. 1.3.1、CDH 搭建Hadoop在安装之前(端口---Cloudera Manager和Cloudera Navigator使用的端口)

    下图概述了Cloudera Manager,Cloudera Navigator和Cloudera Management Service角色使用的一些端口: Cloudera Manager和Clou ...

  9. 【Scrapy】关于使用Scrapy框架爬虫遇到的问题1

    class testScrapy(scrapy.Spider): name = "testLogs" allowed_domains=["cnblogs.com" ...

  10. 无法加载DLL"***.dll":找不到指定的模块

    加载dll的路径不对. 绝对路径不合适,可以换成相对路径. 比如: 把dll放入bin目录下的debug或者release下,然后就可以直接“test.dll”了.不用加路径了. 注意:路径必须与发布 ...