美文网首页
常见正则表达式

常见正则表达式

作者: 彳亍口巴 | 来源:发表于2021-08-08 12:05 被阅读0次

元字符

参考链接:正则表达式
正则表达式的测试:JavaScript正则表达式在线测试工具
表1.常用的元字符:

代码 说明
. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线或汉字
\s 匹配任意的空白符
\d 匹配数字
\b 匹配单词的开始或结束
^ 匹配字符串的开始
$ 匹配字符串的结束

表2 常用的限定符

代码/语法 说明
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次
  • 精确的查找hi这个单词:\bhi\b
  • hi后面不远处跟着一个Lucy:\bhi\b.*\bLucy\b
  • 以0开头,然后是两个数字,然后是一个连字号“-”,最后是8个数字:0\d\d-\d\d\d\d\d\d\d\d,也可以:0\d{2}-\d{8}
  • 刚好6个字符的单词:\b\w{6}\b
  • 输入必须为5位到12位数字:^\d{5,12}$
  • Windows后面跟1个或更多数字:Windows\d+
  • 任何一个英文元音字母:[aeiou]
  • 一位数字:[0-9] 也可以是:\d 两者完全一致,同理,[a-z0-9A-Z_]完全等同于\w

分支条件:从左到右进行匹配

  • 匹配两种以连字号分隔的电话号码:一种是三位区号,8位本地号(如010-12345678),一种是4位区号,7位本地号(0376-2233445):0\d{2}-\d{8}|0\d{3}-\d{7}
  • 匹配3位区号的电话号码,其中区号可以用小括号括起来,也可以不用,区号与本地号间可以用连字号或空格间隔,也可以没有间隔:\(?0\d{2}\)?[- ]?\d{8}|0\d{2}[- ]?\d{8}
  • 简单的IP地址匹配:(\d{1,3}\.){3}\d{1,3}
    正确的IP地址匹配:((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
    表3.常用的反义代码:
代码/语法 说明
\W 匹配任意不是字母,数字,下划线,汉字的字符
\S 匹配任意不是空白符的字符
\D 匹配任意非数字的字符
\B 匹配不是单词开头或结束的位置
[^x] 匹配除了x以外的任意字符
[^aeiou] 匹配除了aeiou这几个字母以外的任意字符
  • 不包含空白符的字符串:\S+
  • 用尖括号括起来的以a开头的字符串:<a[^>]+>

go代码

package main

import (
    "fmt"
    "regexp"
)

func main() {
test02()
}

func test03() {
    text := `Hello 世界!123 Go.`

    // 查找连续的小写字母
    reg := regexp.MustCompile(`[a-z]+`)
    fmt.Printf("%q\n", reg.FindAllString(text, -1))
    // ["ello" "o"]

    // 查找连续的非小写字母
    reg = regexp.MustCompile(`[^a-z]+`)
    fmt.Printf("%q\n", reg.FindAllString(text, -1))
    // ["H" " 世界!123 G" "."]

    // 查找连续的单词字母
    reg = regexp.MustCompile(`[\w]+`)
    fmt.Printf("%q\n", reg.FindAllString(text, -1))
    // ["Hello" "123" "Go"]

    // 查找连续的非单词字母、非空白字符
    reg = regexp.MustCompile(`[^\w\s]+`)
    fmt.Printf("%q\n", reg.FindAllString(text, -1))
    // ["世界!" "."]

    // 查找连续的大写字母
    reg = regexp.MustCompile(`[[:upper:]]+`)
    fmt.Printf("%q\n", reg.FindAllString(text, -1))
    // ["H" "G"]

    // 查找连续的非 ASCII 字符
    reg = regexp.MustCompile(`[[:^ascii:]]+`)
    fmt.Printf("%q\n", reg.FindAllString(text, -1))
    // ["世界!"]

    // 查找连续的标点符号
    reg = regexp.MustCompile(`[\pP]+`)
    fmt.Printf("%q\n", reg.FindAllString(text, -1))
    // ["!" "."]

    // 查找连续的非标点符号字符
    reg = regexp.MustCompile(`[\PP]+`)
    fmt.Printf("%q\n", reg.FindAllString(text, -1))
    // ["Hello 世界" "123 Go"]

    // 查找连续的汉字
    reg = regexp.MustCompile(`[\p{Han}]+`)
    fmt.Printf("%q\n", reg.FindAllString(text, -1))
    // ["世界"]

    // 查找连续的非汉字字符
    reg = regexp.MustCompile(`[\P{Han}]+`)
    fmt.Printf("%q\n", reg.FindAllString(text, -1))
    // ["Hello " "!123 Go."]

    // 查找 Hello 或 Go
    reg = regexp.MustCompile(`Hello|Go`)
    fmt.Printf("%q\n", reg.FindAllString(text, -1))
    // ["Hello" "Go"]

    // 查找行首以 H 开头,以空格结尾的字符串
    reg = regexp.MustCompile(`^H.*\s`)
    fmt.Printf("%q\n", reg.FindAllString(text, -1))
    // ["Hello 世界!123 "]

    // 查找行首以 H 开头,以空白结尾的字符串(非贪婪模式)
    reg = regexp.MustCompile(`(?U)^H.*\s`)
    fmt.Printf("%q\n", reg.FindAllString(text, -1))
    // ["Hello "]

    // 查找以 hello 开头(忽略大小写),以 Go 结尾的字符串
    reg = regexp.MustCompile(`(?i:^hello).*Go`)
    fmt.Printf("%q\n", reg.FindAllString(text, -1))
    // ["Hello 世界!123 Go"]

    // 查找 Go.
    reg = regexp.MustCompile(`\QGo.\E`)
    fmt.Printf("%q\n", reg.FindAllString(text, -1))
    // ["Go."]

    // 查找从行首开始,以空格结尾的字符串(非贪婪模式)
    reg = regexp.MustCompile(`(?U)^.* `)
    fmt.Printf("%q\n", reg.FindAllString(text, -1))
    // ["Hello "]

    // 查找以空格开头,到行尾结束,中间不包含空格字符串
    reg = regexp.MustCompile(` [^ ]*$`)
    fmt.Printf("%q\n", reg.FindAllString(text, -1))
    // [" Go."]

    // 查找“单词边界”之间的字符串
    reg = regexp.MustCompile(`(?U)\b.+\b`)
    fmt.Printf("%q\n", reg.FindAllString(text, -1))
    // ["Hello" " 世界!" "123" " " "Go"]

    // 查找连续 1 次到 4 次的非空格字符,并以 o 结尾的字符串
    reg = regexp.MustCompile(`[^ ]{1,4}o`)
    fmt.Printf("%q\n", reg.FindAllString(text, -1))
    // ["Hello" "Go"]

    // 查找 Hello 或 Go
    reg = regexp.MustCompile(`(?:Hell|G)o`)
    fmt.Printf("%q\n", reg.FindAllString(text, -1))
    // ["Hello" "Go"]

    // 查找 Hello 或 Go,替换为 Hellooo、Gooo
    reg = regexp.MustCompile(`(?:o)`)
    fmt.Printf("%q\n", reg.ReplaceAllString(text, "${n}ooo"))
    // "Hellooo 世界!123 Gooo."

    // 交换 Hello 和 Go
    reg = regexp.MustCompile(`(Hello)(.*)(Go)`)
    fmt.Printf("%q\n", reg.ReplaceAllString(text, "$3$2$1"))
    // "Go 世界!123 Hello."

    // 特殊字符的查找
    //reg = regexp.MustCompile(`[\f\t\n\r\v\123\x7F\x{10FFFF}\\\^\$\.\*\+\?\{\}\(\)\[\]\|]`)
    fmt.Printf("%q\n", reg.ReplaceAllString("\f\t\n\r\v\123\x7F\U0010FFFF\\^$.*+?{}()[]|", "-"))
    // "----------------------"
}

// 字符串匹配
func test01() {
    //text:=`Hello 世界!123 Go.`
    flag, err := regexp.MatchString(`\b\d\b`, "1")
    if err != nil {
        fmt.Println("err=", err)
        return
    }
    fmt.Println("flag==", flag)
}

func test02() {
    text := `Hello 世界!123 Go.`

    // 查找连续的英文字母
    reg := regexp.MustCompile(`[a-zA-Z]+`)
    fmt.Printf("%q\n", reg.FindAllString(text, -1))
    // ["Hello" "Go"]
}

相关文章

  • 常用正则表达式

    常用正则表达式大全!(例如:匹配中文、匹配html)目录导航一、常见正则表达式二、正则表达式应用一、常见正则表达式...

  • 正则相关

    正则表达式基本语法 正则表达式常见字符 正则表达式特殊字符 正则表达式数量词 正则表达式边界匹配 正则表达式逻辑或...

  • iOS开发常用方法(正则匹配)

    写在前面 正则表达式常见字符 正则表达式特殊字符 正则表达式数量词 正则表达式边界匹配 iOS中的NSRegula...

  • 常用的正则表达式

    一、主要是验证数字的常见正则表达式: 二、主要校验字符的正则表达式: 三、特殊需求正则表达式: 下面给大家介绍在前...

  • shell之正则表达式

    1.正则表达式 正则表达式:描述某些字符串匹配规则的工具 2.常见的支持正则表达式的UNIX工具: grep命令族...

  • 正则表达式和Node.js

    正则表达式:创建正则表达式的两种方式;正则表达式的常见用法;正则与数值和其它注意事项 Node.js :什么是No...

  • shell编程之正则表达式

    正则表达式在程序语言中很常见 有利于其他语言中正则表达式的学习 1.正则表达式 ?和()是拓展正则 若是以".$"...

  • 常见的正则表达式

    收集下日常生活中常见的正则表达式,以备日后使用。

  • 爬虫面试基础整理

    常用网络数据爬取方法urllib正则表达式Beautiful SoupSeleniumScrapyLxml 常见的...

  • 【shell笔记>实战】正则表达式实战

    这里演示shell脚本中常见的一些正则表达式例子。如果你对正则表达式不理解,先阅读学习正则表达式一文。 目录文件计...

网友评论

      本文标题:常见正则表达式

      本文链接:https://www.haomeiwen.com/subject/fsznvltx.html