golang 常用的正则查找与替换
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 常用的正则查找与替换的更多相关文章
- visual studio 使用正则查找或替换示例
visual studio 使用正则查找或替换示例 注意哟:使用之前应做好备份 visual studio 2015: 多行替换 (.*)point\ =(.*);\r\n.+this.([A-Za- ...
- JS 正则查找与替换
JS正则查找与替换 一.前提/背景 今天遇到个问题,需要替换字符串中部分字符,这些字符相对整个字符串而言,与其他子字符串类似,无法单独提出:重要的是,该字符串是动态的生成的,就像我们日常看到的网页Ur ...
- frontpage 正则 查找与替换
frontpage正则查找替换 frontpage查找用{}[不是() ]来匹配pattern, 并获取这一匹配 替换时匹配的字符用\1 \2 \3表示 第 N 个标记表达式 \N 在“替换”表达式中 ...
- Vim 常用操作、查找和替换
这篇文章来详细介绍 Vim 中查找相关的设置和使用方法. 包括查找与替换.查找光标所在词.高亮前景/背景色.切换高亮状态.大小写敏感查找等. 查找 在normal模式下按下/即可进入查找模式,输入要查 ...
- Notepad 列编辑、正则查找、替换
目标: 将源数据转成初始化sql语句.源数据: 104110040018,1,中国银行,中国银行天津琼州道支行,NULL,1100,天津市,12,天津市 104110040059,1,中国银行,中国银 ...
- Vim常用匹配、查找、替换命令总结
以前都是从头开始找,最近处理log文件很多. 在vim 中输入 :1?XXXX 1的意思是文件的第一行 ?的意思是反向查找 XXXX就是你要找的关键字 更新:Linux 从末尾开始查找日志 tac c ...
- Sublime_正则查找替换
在sublime编辑器中使用正则表达式对内容进行查找和替换: (1)Find——Replace... (2)出现下图界面 注意:点击左边第一个按钮,开启正则表达式功能. (3) (4)点击Replac ...
- 在VS中用正则表达式查找或替换
2005VS和2008VS正则替换规则如下(2013VS不适合,不需要的同学可以直接跳到2013VS的操作办法): Example: 查找#incldue中带有gl开头的头文件的,用include.+ ...
- JS利用正则配合replace替换指定字符
替换指定字符的方法有很多,在本文为大家详细介绍下,JS利用正则配合replace是如何做到的,喜欢的朋友可以参考下 定义和用法 replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一 ...
随机推荐
- FlashDevelop 发布SWC
环境配置: 1.安装32位Java,经测试可用的 链接:http://pan.baidu.com/s/1i4CraXR 密码:xuud 2.ant,链接:http://pan.baidu.com/s/ ...
- oc字符串与c字符串转换和拷贝
// Helper method to create C string copy NSString* MakeNSString (const char* string) { if (string) { ...
- Examples: How to Pronounce T
Examples: How to Pronounce T Share Tweet Share Tagged With: Flap T, Stop T The [t] sound is not alwa ...
- python的解构
今天学习python看到python的解构,觉得很有用就写下来,防止自己忘了 首先定义个列表 然后我们来解构 字典呢?字典需要两个*号才能解构 这样调用不明显 来个明显点的 上面错误是,你定义了一个形 ...
- 【转】JS windows.open()详解
window.open(url, name, features, replace) Arguments - 参数 url 可选字符串参数,指向要在新窗口中显示的文档的URL.如果省略该参数,或者参 ...
- [Shell]一张图知道Shell(图)
- swift重写导航控制器类的 initialize 方法
//这个方法,是当这个类第一次被创建时调用,且只调用一次 override class func initialize() { let navBar = UINavigationBar.appeara ...
- 用python对txt中文件读取,然后按顺序标号存入excel中
读取txt文件,然后存入excel中 import xlwt #从txt文件中读取内容,放到ftext1中 f1=open('/Users/XXX/Documents/pythonwork/tenso ...
- devmapper: Thin Pool has 162394 free data blocks which is less than minimum required 163840 free data blocks. Create more free space in thin pool or use dm.min_free_space option to change behavior
问题: 制作镜像的时候报错 devmapper: Thin Pool has 162394 free data blocks which is less than minimum required 1 ...
- Centos6.5 防火墙设置详解
vim /etc/sysconfig/iptables #丢弃所有进入请求 INPUT DROP [0:0] #丢弃所有转发请求 FORWARD DROP [0:0] #允许所有的output请求 O ...