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. 使用的正则语法

google/re2

Printf 语法

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 的正则表达式的更多相关文章

  1. JS正则表达式常用总结

    正则表达式的创建 JS正则表达式的创建有两种方式: new RegExp() 和 直接字面量. //使用RegExp对象创建 var regObj = new RegExp("(^\\s+) ...

  2. Python高手之路【五】python基础之正则表达式

    下图列出了Python支持的正则表达式元字符和语法: 字符点:匹配任意一个字符 import re st = 'python' result = re.findall('p.t',st) print( ...

  3. C# 正则表达式大全

    文章导读 正则表达式的本质是使用一系列特殊字符模式,来表示某一类字符串.正则表达式无疑是处理文本最有力的工具,而.NET提供的Regex类实现了验证正则表达式的方法.Regex 类表示不可变(只读)的 ...

  4. C#基础篇 - 正则表达式入门

    1.基本概念 正则表达式(Regular Expression)就是用事先定义好的一些特定字符(元字符)或普通字符.及这些字符的组合,组成一个“规则字符串”,这个“规则字符串”用来判断我们给定的字符串 ...

  5. JavaScript正则表达式,你真的知道?

    一.前言 粗浅的编写正则表达式,是造成性能瓶颈的主要原因.如下: var reg1 = /(A+A+)+B/; var reg2 = /AA+B/; 上述两个正则表达式,匹配效果是一样的,但是,效率就 ...

  6. Python 正则表达式入门(中级篇)

    Python 正则表达式入门(中级篇) 初级篇链接:http://www.cnblogs.com/chuxiuhong/p/5885073.html 上一篇我们说在这一篇里,我们会介绍子表达式,向前向 ...

  7. 【JS基础】正则表达式

    正则表达式的() [] {}有不同的意思. () 是为了提取匹配的字符串.表达式中有几个()就有几个相应的匹配字符串. (\s*)表示连续空格的字符串. []是定义匹配的字符范围.比如 [a-zA-Z ...

  8. JavaScript 正则表达式语法

    定义 JavaScript定义正则表达式有两种方法. 1.RegExp构造函数 var pattern = new RegExp("[bc]at","i"); ...

  9. [jquery]jquery正则表达式验证(手机号、身份证号、中文名称)

    数字判断方法:isNaN()函数 test()方法 判断字符串中是否匹配到正则表达式内容,返回的是boolean值 ( true / false ) // 验证中文名称 function isChin ...

  10. JS中给正则表达式加变量

    前不久同事询问我js里面怎么给正则中添加变量的问题,遂写篇博客记录下.   一.字面量 其实当我们定义一个字符串,一个数组,一个对象等等的时候,我们习惯用字面量来定义,例如: var s = &quo ...

随机推荐

  1. iOS开发-NSDate获取当前时区时间

    NSDate Date默认显示的是格林尼治所在地的标准时间(GMT),转换为中国时区需要加上八个小时,针对与这个情况你可以直接在获取时间之后加上八个小时,也可以转换到当前时区,都很简单,代码参考如下: ...

  2. linux实现共享内存同步的四种方法

    https://blog.csdn.net/sunxiaopengsun/article/details/79869115 本文主要对实现共享内存同步的四种方法进行了介绍. 共享内存是一种最为高效的进 ...

  3. Docker(二):Registry 镜像仓库

  4. golang ----gc问题

    go程序内存占用大的问题 这个问题在我们对后台服务进行压力测试时发现,我们模拟大量的用户请求访问后台服务,这时各服务模块能观察到明显的内存占用上升.但是当停止压测时,内存占用并未发生明显的下降.花了很 ...

  5. python gb2312 转换为 utf-8

    url = "" headers = { "Host":"www.chinanews.com", "User-Agent" ...

  6. Django Mysql SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED

    Django 执行makemigrations  的时候报错: django.db.utils.ProgrammingError: (1064, "You have an error in ...

  7. 2D空间中求线段与圆的交点

    出处: https://answers.unity.com/questions/366802/get-intersection-of-a-line-and-a-circle.html 测试脚本(返回值 ...

  8. oracle 11g rac asm磁盘组增加硬盘

    要增加磁盘的磁盘组为:DATA 要增加的磁盘为: /dev/sde1 在第一个节点上:[root@rac1 ~]# fdisk /dev/sdeDevice contains neither a va ...

  9. LeetCode: Find Peak Element 解题报告

    Find Peak Element A peak element is an element that is greater than its neighbors. Given an input ar ...

  10. Linux 下配置Tomcat的虚拟路径

    如果你的Linux服务器下,不止一个tomcat的时候,这个时候,你就会发现,每次去发布项目很麻烦,还需要到webapps下面去看,繁琐的很,这里就用到了,Tomcat的虚拟路径,制定一个目录,作为t ...