go 的正则表达式
go 操作字符串。由于 go 中的字符串不是对象,所以没有直接操作字符串的相关方法。要操作字符串可以使用 strings 包或者 regexp 包处理。
一、简要介绍一下,strings 包 (strings)
常见的方法示例
// demo_common.go package main import (
"fmt"
"strings"
) func demo_index() {
str1 := "lemos1235lemos"
s1 := strings.Index(str1, "os")
s2 := strings.LastIndex(str1, "os")
fmt.Println(s1)
fmt.Println(s2)
} func demo_contains() {
str1 := "lemos1235"
s1 := strings.Contains(str1, "os")
fmt.Println(s1)
} func demo_split() {
str1 := "http://www.cnblogs.com/page/23"
page := strings.Split(str1, "/")[4]
fmt.Println(page)
} func demo_to_lower_and_to_upper() {
str1 := "lemOS1235LEMos"
up := strings.ToUpper(str1)
low := strings.ToLower(str1)
fmt.Println(up, low) str2 := " lemos1235 !"
// with all leading and trailing unicode code points contained in cutset will be removed
low_trim := strings.Trim(str2, " !")
fmt.Printf("[%q]", low_trim)
} func main() {
// demo_index()
demo_contains()
// demo_split()
demo_to_lower_and_to_upper()
}
二、regex 包的介绍
1. 使用的正则语法
2. 常用的函数方法
| 名称 | 说明 | 备注 |
| Match | 验证正则表达式是否匹配 []byte | - |
| MatchString | 验证正则表达式是否匹配 string | - |
| FindString | ||
| FindStringSubmatch | 返回 []string | 分组 |
| FindAllString | Regexp的方法,匹配字符串,返回匹配结果组成一个 []string。限定参数 -1表示不限定,其它表示限定。 | 贪婪模式 |
| FindAllStringSubmatch | Regexp的方法,返回一个 [][]string |
贪婪模式, 分组 |
正则的判断语句:MatchString
// demo_match.go package main import (
"regexp"
"fmt"
) func demo_match_string() {
// MatchString could match from anywhere of strings, not only from the start
ma,err := regexp.MatchString("\\d", "lemos w2d")
if err != nil {
fmt.Println(err)
}
fmt.Println(ma)
} func main() {
demo_match_string()
}
输出
true LEMOS1235LEMOS lemos1235lemos
["lemos1235"]
正则的查询语句 find
// demo_find.go package main import (
"fmt"
"regexp"
) // 非贪婪模式(non-greedy)
func demo_find_string() {
pa := regexp.MustCompile("^[a-z1-9]+@\\d+.com$")
str1 := "xfe1235@163.com"
result := pa.FindString(str1)
fmt.Println(result)
} // 分组模式
func demo_find_string_submatch() {
pa := regexp.MustCompile("a(x*)b(y|z)c")
str1 := "axxbyc"
result := pa.FindStringSubmatch(str1)
for i, v := range result {
fmt.Println(i, v)
}
// fmt.Println(result)
} // 贪婪模式(greedy)
func demo_find_all_string() {
pa := regexp.MustCompile("^[a-z1-9]+@\\d+.com$")
str1 := "xfe1235@163.com"
result := pa.FindAllString(str1, -1)
fmt.Println(result[0])
} func main() {
demo_find_string()
demo_find_string_submatch()
demo_find_all_string()
}
输出
command-line-arguments
xfe1235@.com
axxbyc
xx
y
xfe1235@.com
go 的正则表达式的更多相关文章
- JS正则表达式常用总结
正则表达式的创建 JS正则表达式的创建有两种方式: new RegExp() 和 直接字面量. //使用RegExp对象创建 var regObj = new RegExp("(^\\s+) ...
- Python高手之路【五】python基础之正则表达式
下图列出了Python支持的正则表达式元字符和语法: 字符点:匹配任意一个字符 import re st = 'python' result = re.findall('p.t',st) print( ...
- C# 正则表达式大全
文章导读 正则表达式的本质是使用一系列特殊字符模式,来表示某一类字符串.正则表达式无疑是处理文本最有力的工具,而.NET提供的Regex类实现了验证正则表达式的方法.Regex 类表示不可变(只读)的 ...
- C#基础篇 - 正则表达式入门
1.基本概念 正则表达式(Regular Expression)就是用事先定义好的一些特定字符(元字符)或普通字符.及这些字符的组合,组成一个“规则字符串”,这个“规则字符串”用来判断我们给定的字符串 ...
- JavaScript正则表达式,你真的知道?
一.前言 粗浅的编写正则表达式,是造成性能瓶颈的主要原因.如下: var reg1 = /(A+A+)+B/; var reg2 = /AA+B/; 上述两个正则表达式,匹配效果是一样的,但是,效率就 ...
- Python 正则表达式入门(中级篇)
Python 正则表达式入门(中级篇) 初级篇链接:http://www.cnblogs.com/chuxiuhong/p/5885073.html 上一篇我们说在这一篇里,我们会介绍子表达式,向前向 ...
- 【JS基础】正则表达式
正则表达式的() [] {}有不同的意思. () 是为了提取匹配的字符串.表达式中有几个()就有几个相应的匹配字符串. (\s*)表示连续空格的字符串. []是定义匹配的字符范围.比如 [a-zA-Z ...
- JavaScript 正则表达式语法
定义 JavaScript定义正则表达式有两种方法. 1.RegExp构造函数 var pattern = new RegExp("[bc]at","i"); ...
- [jquery]jquery正则表达式验证(手机号、身份证号、中文名称)
数字判断方法:isNaN()函数 test()方法 判断字符串中是否匹配到正则表达式内容,返回的是boolean值 ( true / false ) // 验证中文名称 function isChin ...
- JS中给正则表达式加变量
前不久同事询问我js里面怎么给正则中添加变量的问题,遂写篇博客记录下. 一.字面量 其实当我们定义一个字符串,一个数组,一个对象等等的时候,我们习惯用字面量来定义,例如: var s = &quo ...
随机推荐
- 异常 try catch finally return 执行关系 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- Shell获取某目录下所有文件夹的名称
查看目录下面的所有文件: #!/bin/bash cd /目标目录 for file in $(ls *) do echo $file done 延伸的方法,查看目录下面的所有目录 #!/bin/ba ...
- Linux编译步骤概述
Linux,一切皆文件! linux环境下,编译源码文件步骤总结 01.下载解压 一遍在开源网站有download/下载页面 02.安装基本编译环境 yum install -y gcc gcc-c+ ...
- C语言100个经典的算法
C语言的学习要从基础開始.这里是100个经典的算法-1C语言的学习要从基础開始,这里是100个经典的算法 题目:古典问题:有一对兔子,从出生后第3个月起每一个月都生一对兔子.小兔 子长到第三个月后每一 ...
- More than the maximum number of request parameters
前些时间,我们的的一个管理系统出现了点问题,原本运行的好好的功能,业务方突然讲不行了,那个应用已经运行了好多年了,并且对应的代码最近谁也没改动过,好奇怪的问题,为了解决此问题,我们查看了日志,发现请求 ...
- Orace 12.2 ORA-12012: error on auto execute of job "SYS"."ORA$AT_OS_OPT_SY_21"
一个测试环境的12.2.0.1数据库后台alert不断报出以下错误信息: Errors in file /d12/app/oracle/diag/rdbms/test/test/trace/test_ ...
- Java list对象列表排序 实例
package com.test; public class Bean { private String name; private int priority; public String getNa ...
- Spring Boot系列——Spring Boot如何启动
Spring Boot启动过程 上篇<Spring Boot系列--5分钟构建一个应用>介绍了如何快速创建一个Spring Boot项目并运行.虽然步骤少流程简单,为开发者省去了很多重复 ...
- MySQL 清除从库同步信息
实际的业务生产系统中,mysql从库有时候会根据实际需求变更为主库,这时候我们需要清除掉从库配置的主从信息登录从库执行以下命令:mysql> stop slave;mysql> reset ...
- [docker]docker自带的overlay网络实战
overlay网络实战 n3启动consul docker run -d -p 8500:8500 -h consul --name consul progrium/consul -server -b ...