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. 转:探讨JS合并两个数组的方法

    我们在项目过程中,有时候会遇到需要将两个数组合并成为一个的情况. 比如: var a = [1,2,3]; var b = [4,5,6]; 有两个数组a.b,需求是将两个数组合并成一个.方法如下: ...

  2. Oracle重建表空间操作实例

    由于环境维护或者性能测试需要,经常需要对表空间进行重建操作.重建表空间操作主要分3中情况介绍,分别是业务表空间.临时表空间和回滚段表空间的重建. 重建业务表空间 由于业务规划要求,重建后的业务表空间名 ...

  3. 漫谈C指针:参数传递的三道题目

    漫谈C指针:参数传递的三道题目 2009-07-02 开讲之前,我先请你做三道题目.(嘿嘿,得先把你的头脑搞昏才行……唉呀,谁扔我鸡蛋?) 考题一,程序代码如下: [c] view plaincopy ...

  4. 利用monkeyrunner、python脚本来做多设备多apk适配ui界面截屏的自动化测试

    http://www.cnblogs.com/youxilua/archive/2011/11/25/2262715.html

  5. boot中 Quartz注入spring管理类失败

    在项目中用到了Quartz,想在里面实现业务操作发现sping类注入总是失败.后来网上查询了一下解决办法.下面把我成功解决问题的这个版本发出来,大家一起学习一下. 在quartz 会发现 job中无法 ...

  6. 04_web基础(四)之servlet详解

    16.17.18.servlet生命周期 javax.servlet.Servlet接口方法:public String getServletInfo():获取Servlet相关信息(作者,版权,版本 ...

  7. svn git 必须理解的概念

    不都是SCM代码管理嘛,有很大区别么?很多svn老鸟都是抱着这样的心态去学习git,然后无一幸免地陷入“查阅过很多资料,依然掌握不好”的困境,至少我们团队是这样的. 网上的资料确实已经很多了,却没有把 ...

  8. SAP字段带空格,导致日期转换失败,提示not a vaild month

    执行此节点会报以下错误,ORA-01843,no a valid month,提示月份转换异常 尝试增加条件也仍然提示错误:and VBEP.EDATU<>'00000000' and V ...

  9. SQLMAP自动注入(四):枚举

    --privileges 查询权限 -U 指定用户 -CU指定当前用户 --schema 查询所有的数据 --batch 批处理,自动选择默认选项 --exclude-sysdbs 排除系统库的查询 ...

  10. 更新linux下python版本

    # 安装所有的开发工具包 yum groupinstall -y "Development tools" # 安装其它的必需包 yum install -y zlib-devel ...