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 ...
随机推荐
- iOS开发-NSDate获取当前时区时间
NSDate Date默认显示的是格林尼治所在地的标准时间(GMT),转换为中国时区需要加上八个小时,针对与这个情况你可以直接在获取时间之后加上八个小时,也可以转换到当前时区,都很简单,代码参考如下: ...
- linux实现共享内存同步的四种方法
https://blog.csdn.net/sunxiaopengsun/article/details/79869115 本文主要对实现共享内存同步的四种方法进行了介绍. 共享内存是一种最为高效的进 ...
- Docker(二):Registry 镜像仓库
- golang ----gc问题
go程序内存占用大的问题 这个问题在我们对后台服务进行压力测试时发现,我们模拟大量的用户请求访问后台服务,这时各服务模块能观察到明显的内存占用上升.但是当停止压测时,内存占用并未发生明显的下降.花了很 ...
- python gb2312 转换为 utf-8
url = "" headers = { "Host":"www.chinanews.com", "User-Agent" ...
- Django Mysql SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED
Django 执行makemigrations 的时候报错: django.db.utils.ProgrammingError: (1064, "You have an error in ...
- 2D空间中求线段与圆的交点
出处: https://answers.unity.com/questions/366802/get-intersection-of-a-line-and-a-circle.html 测试脚本(返回值 ...
- oracle 11g rac asm磁盘组增加硬盘
要增加磁盘的磁盘组为:DATA 要增加的磁盘为: /dev/sde1 在第一个节点上:[root@rac1 ~]# fdisk /dev/sdeDevice contains neither a va ...
- LeetCode: Find Peak Element 解题报告
Find Peak Element A peak element is an element that is greater than its neighbors. Given an input ar ...
- Linux 下配置Tomcat的虚拟路径
如果你的Linux服务器下,不止一个tomcat的时候,这个时候,你就会发现,每次去发布项目很麻烦,还需要到webapps下面去看,繁琐的很,这里就用到了,Tomcat的虚拟路径,制定一个目录,作为t ...