golang正则手机,golang正则匹配

本文目录一览:

在golang中,搜索关键字,里怎么使用(名字/账号/手机号)

这和用不用golang没有关系,给你个提示

先用正则判断关键字是否为手机号,不是进行下一步

判断关键字是否符合帐号规则

最后进行名字匹配

golang正则表达式 分组命名

正则中有分组这个功能,在golang中也可以使用命名分组。

一次匹配的情况

场景还原如下:

有一行文本,格式为:姓名 年龄 邮箱地址

请将其转换为一个map

代码实现如下:

str := `Alice 20 alice@gmail.com`

// 使用命名分组,显得更清晰

re := regexp.MustCompile(`(?Pname[a-zA-Z]+)\s+(?Page\d+)\s+(?Pemail\w+@\w+(?:\.\w+)+)`)

match := re.FindStringSubmatch(str)

groupNames := re.SubexpNames()

fmt.Printf(“%v, %v, %d, %d\n”, match, groupNames, len(match), len(groupNames))

result := make(map[string]string)

// 转换为map

for i, name := range groupNames {

if i != 0 name != “” { // 第一个分组为空(也就是整个匹配)

result[name] = match[i]

}

}

prettyResult, _ := json.MarshalIndent(result, “”, ” “)

fmt.Printf(“%s\n”, prettyResult)

输出为:

[Alice 20 alice@gmail.com Alice 20 alice@gmail.com], [ name age email], 4, 4

{

“age”: “20”,

“email”: “alice@gmail.com”,

“name”: “Alice”

}

注意 [ name age email]有4个元素, 第一个为””。

多次匹配的情况

接上面的例子,实现一个更贴近现实的需求:

有一个文件, 内容大致如下:

Alice 20 alice@gmail.com

Bob 25 bob@outlook.com

gerrylon 26 gerrylon@github.com

更多内容

和上面一样, 不过这次转出来是一个slice of map, 也就是多个map。

代码如下:

// 文件内容直接用字符串表示

usersStr := `

Alice 20 alice@gmail.com

Bob 25 bob@outlook.com

gerrylon 26 gerrylon@github.com

`

userRe := regexp.MustCompile(`(?Pname[a-zA-Z]+)\s+(?Page\d+)\s+(?Pemail\w+@\w+(?:\.\w+)+)`)

// 这里要用FindAllStringSubmatch,找到所有的匹配

users := userRe.FindAllStringSubmatch(usersStr, -1)

groupNames := userRe.SubexpNames()

var result []map[string]string // slice of map

// 循环所有行

for _, user := range users {

m := make(map[string]string)

// 对每一行生成一个map

for j, name := range groupNames {

if j != 0 name != “” {

m[name] = strings.TrimSpace(user[j])

}

}

result = append(result, m)

}

prettyResult, _ := json.MarshalIndent(result, “”, ” “)

fmt.Println(string(prettyResult))

输出为:

[

{

“age”: “20”,

“email”: “alice@gmail.com”,

“name”: “Alice”

},

{

“age”: “25”,

“email”: “bob@outlook.com”,

“name”: “Bob”

},

{

“age”: “26”,

“email”: “gerrylon@github.com”,

“name”: “gerrylon”

}

]

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

总结

使用命名分组可以使正则表示的意义更清晰。

转换为map更加符合人类的阅读习惯,不过比一般的根据索引取分组值麻烦一些。

————————————————

版权声明:本文为CSDN博主「butterfly5211314」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:

golang 正则 regexp包使用

先介绍几种常用的方法:

1、使用MatchString函数或Match函数

regexp.MatchString(pattern string, s string) pattern为正则表达式,s为需要校验的字符串

regexp.Match(pattern string, b []byte) pattern为正则表达式,s为需要校验的字符串

它们的作用都是匹配,区别在于参数为字符串和切片

实例如下:

2、使用 Compile函数或MustCompile函数

它们的区别是Compile返回两个参数 Regexp,error类型,而MustCompile只返回 Regexp类型

它们的作用是将正则表达式进行编译,返回优化的 Regexp 结构体,该结构体有需多方法。

实例如下:

3、查找正则匹配字串( 注:函数名包含string的所传参数为string 其他的均为[]byte 带All是所有)

查找正则匹配的字符串位置( 注:函数名包含string的所传参数为string 其他的均为[]byte 带All是所有)

4、替换

正则替换

按原文替换

函数处理替换源字串

5、Regexp结构体中一些常用的方法

原创文章,作者:XLIC,如若转载,请注明出处:https://www.506064.com/n/134236.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
XLICXLIC
上一篇 2024-10-04 00:04
下一篇 2024-10-04 00:04

相关推荐

  • 手机杜比音效有必要开吗?

    杜比音效是一个在影音领域中非常知名的品牌。许多手机都已经将杜比音效作为一个卖点来进行推广。那么,手机杜比音效有必要开吗?本文将从多个方面进行阐述。 一、杜比音效的介绍 杜比音效是一…

    编程 2025-04-29
  • 使用Golang调用Python

    在现代软件开发中,多种编程语言的协作是相当普遍的。其中一种使用场景是Golang调用Python,这使得在使用Python库的同时,可以利用Golang的高性能和强大并发能力。这篇…

    编程 2025-04-29
  • 如何设置chrome不同步手机历史记录

    使用chrome浏览器时,在登录chrome账号的情况下,由于默认同步功能,浏览器历史记录等数据都会同步到其他设备上,但是有时候我们并不想这么做,比如为了保护隐私、避免干扰等等。所…

    编程 2025-04-29
  • 如何使用JS判断苹果手机是刘海屏还是药丸屏

    苹果的全面屏不少人都有所耳闻,其中药丸屏跟刘海屏是最显著的两种类型。本文将会介绍如何使用JS判断当前设备属于哪一种屏幕类型,并提供对应的代码示例。 一、什么是药丸屏和刘海屏 刘海屏…

    编程 2025-04-29
  • 手机Python编译器爱心代码

    本文将从以下几个方面对手机Python编译器爱心代码做详细阐述,旨在帮助读者了解该编译器的基本功能和特点: 一、简要介绍 手机Python编译器爱心代码是一款可以在手机上运行Pyt…

    编程 2025-04-29
  • 使用Golang创建黑色背景图片的方法

    本文将从多个方面介绍使用Golang创建黑色背景图片的方法。 一、安装必要的代码库和工具 在开始创建黑色背景图片之前,我们需要先安装必要的代码库和工具: go get -u git…

    编程 2025-04-29
  • 使用Python模拟手机浏览器的方法

    解答如何使用Python模拟手机浏览器,并且给出示例代码。 一、安装Selenium库 使用Python模拟手机浏览器需要使用Selenium库。 首先,使用pip命令进行安装: …

    编程 2025-04-28
  • 手机怎样打出圆周率符号

    要在手机上输入圆周率符号,你可以使用以下几种方法: 一、使用系统输入法自带符号 很多手机系统自带符号输入功能,通过以下步骤可以快速输入圆周率符号: 1. 在需要输入的文本框中,切换…

    编程 2025-04-28
  • 手机安全模式怎么解除?

    安全模式是一种手机自身的保护模式,它会禁用第三方应用程序并使用仅限基本系统功能。但有时候,安全模式会使你无法使用手机上的一些重要功能。如果你想解除手机安全模式,可以尝试以下方法: …

    编程 2025-04-28
  • Python模拟手机App签到

    本文将为大家详细介绍如何使用Python对手机App进行模拟签到。随着App的普及,许多App需要用户签到才能获取积分、道具等奖励,手动签到十分麻烦,使用Python可以轻松地进行…

    编程 2025-04-27

发表回复

登录后才能评论