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 ...
随机推荐
- Android 面试题 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- SQL SERVER 2005 数据库置疑修复
alter database 置疑数据库 set emergency go alter database 置疑数据库 set single_user with rollback immediate g ...
- 各hbase版本对hadoop各版本的支持情况
http://hbase.apache.org/book/configuration.html#basic.prerequisites HBase-0.94.x HBase-0.98.x (Sup ...
- Notes 和 Domino 已知限制
Notes 和 Domino 已知限制 功能测试 限制数据库的最大大小是多少? 最大的 OS 文件大小限制 -(最大为 64GB)文本域的最大大小是多少? 15KB(存储):15KB,显示在视图列中R ...
- ZOJ 3827 Information Entropy 水
水 Information Entropy Time Limit: 2 Seconds Memory Limit: 65536 KB Special Judge Informati ...
- TerminateProcess的使用问题
最好时外部进程来结束目标进程,类似于任务管理器的结束目标进程方式.如果是自身进程想结束自身,可能不同版本的windows行为不一致,有一些能自身强制退出,有一些强制退出不了. 本来MSDN上就说了这个 ...
- Emacs 设置C++代码风格
;; C++代码风格设置 (defconst cobbcpp '("linux" ; this is inheritance from the linux style (c-bas ...
- 浏览器URL参数解决方案
function getUrlParams() { var search = window.location.search; // 写入数据字典 , search.length).split(&quo ...
- Go 程序的性能调试问题
英文原文:Debugging performance issues in Go programs 假设你手上有个Go语言编写的程序,你打算提升它的性能.目前有一些工具可以为此提供帮助.这些工具能帮你发 ...
- 格雷码(Gray code)仿真
作者:桂. 时间:2018-05-12 16:25:02 链接:http://www.cnblogs.com/xingshansi/p/9029081.html 前言 FIFO中的计数用的是格雷码, ...