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 ...
随机推荐
- :app:compileDebugJavaWithJavac
org.gradle.initialization.ReportedException: org.gradle.internal.exceptions.LocationAwareException: ...
- 开发指南专题五:JEECG微云高速开发平台代码生成器
开发指南专题五:JEECG微云高速开发平台代码生成器 1.1. Maven开发环境搭建 在搭建jeecg的maven开发环境之前,须要先配置好本机的maven环境,并在eclipse中安装好m2ecl ...
- 【tp5】tp5实现空模块、空控制器、空操作的页面404跳转
写在最开始:本教程适用于tp5路由的[强制模式+半pathinfo模式+pathinfo模式],通用. 比网上的[通过路由去控制空模块更强力.更全面]. PS:路由控制空模块缺点:仅仅在[强制模式下才 ...
- funny
var life = { "work_hard","have_fun","make_history" };
- ASP.NET中TimeSpan的用法
一.TimeSpan常量.字段 TimeSpan.MaxValue; // 10675199.02:48:05.4775807TimeSpan.MinValue; //-10675199.02:48: ...
- 服务端怎样暴露IBinder接口对象
服务端怎样暴露IBinder接口对象: package com.example.mydownload; import android.app.Service; import android.conte ...
- 拯救安卓手机的数据(无法进入系统只能打开recovery)
这里不得不赞一个谷歌的开放,如果不是这样读取数据就很糟糕了,记得一千带着我的mac本子到苹果店,那个所谓的“天才”就说苹果的数据无法读取,我了个艹,为了避免丢失你必须得准备一个TM.好了废话不多说,进 ...
- 第三部分:Android 应用程序接口指南---第三节:应用程序资源---第一章 资源提供
第1章 资源提供 你应该经常外部化你应用程序代码中的资源,比如图片.字符串等,这样有利于你独立处理这些资源.你也应该根据特定的设备配置提供一些可替代的资源,并且把他们分组保存在指定的路径名下.运行时, ...
- 【iCore1S 双核心板_ARM】例程三:EXTI中断输入实验——读取ARM按键状态
实验原理: 按键的一端与STM32的GPIO(PB9)相连,且PB9外接一个1k大小的限流上接电阻. 初始化时把PB9设置成输入模式,当按键弹起时,PB9由于上拉电阻的作用呈高电平(3.3V): 当按 ...
- npm WARN unmet dependency错误解决方法
在MAC上安装webpack以及reactjs等其它组件时,安装太慢卡住不动,直接ctrl+c终止后,再npm install后出npm WARN unmet dependency错误,npm cac ...