baby sword‘s blog baby sword‘s blog
首页
  • java基础
  • java进阶
大数据
  • mysql

    • mysql索引
    • mysql日志
  • redis

    • 单机下的redis
    • 集群下的redis
  • Spring
  • springboot
  • RPC
  • netty
  • mybatis
  • maven
  • 消息队列
  • kafka
  • zookeeper
  • rocketmq
  • 七大设计原则
  • 创建型模式
  • 结构型模式
  • 行为型模式
  • SpringCloud

    • eureka
  • SpringCloud Alibaba

    • nacos
  • 计算机网络
  • 操作系统
  • 算法
  • 个人项目
  • 个人面试面经
  • 八股记忆
  • 工作积累
  • 逻辑题
  • 面试

    • 百度后端实习二面
GitHub (opens new window)

zhengjian

不敢承担失去的风险,是不可能抓住梦想的
首页
  • java基础
  • java进阶
大数据
  • mysql

    • mysql索引
    • mysql日志
  • redis

    • 单机下的redis
    • 集群下的redis
  • Spring
  • springboot
  • RPC
  • netty
  • mybatis
  • maven
  • 消息队列
  • kafka
  • zookeeper
  • rocketmq
  • 七大设计原则
  • 创建型模式
  • 结构型模式
  • 行为型模式
  • SpringCloud

    • eureka
  • SpringCloud Alibaba

    • nacos
  • 计算机网络
  • 操作系统
  • 算法
  • 个人项目
  • 个人面试面经
  • 八股记忆
  • 工作积累
  • 逻辑题
  • 面试

    • 百度后端实习二面
GitHub (opens new window)
  • 华仔聊技术

  • 业务设计

  • 场景设计

  • 运维

  • 安全

  • 面试

  • mac相关工具推荐

  • 开发工具

  • 人工智能

  • 推荐

  • 阅读

  • 工具

    • idea相关
    • 常见的序列化工具
    • github个人资料展示
    • 个人资料
    • slf4j+logback
    • 跳板机
    • ssh原理
    • 正则表达式
    • 性能测试
    • github快速访问
  • 计划

  • 产品

  • 云原生

  • go

  • QVM

  • 软件设计师

  • 极客时间

  • 单元测试

  • 其他
  • 工具
xugaoyi
2023-08-20

正则表达式

[#](https://tobe*.+?)

常见语法:

正则表达式是用于匹配和操作字符串的强大工具,以下是一些常用的正则表达式方法和用法:

  1. 字面量匹配: 最基本的正则表达式是直接匹配字面量字符串。例如,正则表达式 /hello/ 将匹配字符串中的 "hello"。
  2. 字符类: 使用字符类来匹配特定范围的字符。
    • [abc]:匹配 "a"、"b" 或 "c" 中的任何一个字符。
    • [0-9]:匹配任意数字字符。
    • [^a-z]:匹配除了小写字母以外的任意字符。
  3. 元字符: 元字符在正则表达式中具有特殊意义,需要使用转义符号 \ 进行转义。
    • .:匹配除换行符外的任意单个字符。
    • \d:匹配任意数字字符。
    • \w:匹配任意字母、数字或下划线字符。
    • \s:匹配任意空白字符。
  4. 重复限定符: 用于指定匹配字符的重复次数。
    • *:匹配前一个字符零次或多次。
    • +:匹配前一个字符一次或多次。
    • ?:匹配前一个字符零次或一次。
    • {n}:匹配前一个字符恰好 n 次。
    • {n,}:匹配前一个字符至少 n 次。
    • {n,m}:匹配前一个字符至少 n 次,但不超过 m 次。
  5. 边界匹配: 用于限定匹配的边界。
    • ^:匹配行的开头。
    • $:匹配行的结尾。
    • \b:匹配单词边界。
    • \B:匹配非单词边界。
  6. 分组和捕获: 使用括号来创建分组,以及在匹配时捕获分组中的内容。
    • (pattern):创建一个捕获组。
    • (?:pattern):创建一个非捕获组。
  7. 选择器: 使用竖线 | 来进行多个模式的选择匹配。
    • cat|dog:匹配 "cat" 或 "dog"。
  8. 反向引用: 使用反斜杠和数字来引用先前捕获的分组内容。
    • \1:引用第一个捕获的分组内容。
  9. 零宽断言: 用于查找在某些位置前面或后面的模式,但不包括这些位置本身。
    • (?=pattern):正向肯定先行断言。
    • (?<=pattern):正向肯定后发断言。
    • (?!pattern):正向否定先行断言。
    • (?<!pattern):正向否定后发断言。
  10. 修饰符: 用于对整个正则表达式进行修饰,影响匹配的行为。
    • i:不区分大小写匹配。
    • g:全局匹配,找到所有匹配项。
    • m:多行匹配,考虑换行符。

这只是正则表达式的基础,正则表达式语法非常丰富,可以实现更复杂的模式匹配和替换。学习正则表达式需要不断的练习和实践。你可以使用在线的正则表达式测试工具来尝试不同的正则表达式,如Regex101、RegExr等。

匹配中国手机号:

这个正则表达式是用来匹配中国大陆的手机号码格式的。它的具体匹配规则如下:


^(\+86)?0?1([3-57-9]\d|6[1-79])\d{8}$
1
2

解释每个部分的含义:

  • ^:匹配字符串的开头。
  • (\+86)?:这是一个可选的分组,用来匹配可能的国际号码前缀 "+86"(中国的国际区号)。
  • 0?:这是另一个可选的分组,匹配可能的 "0" 前缀,通常是用于拨打长途电话的。
  • 1:匹配手机号码的第一个数字必须是 "1"。
  • ([3-57-9]\d|6[1-79]):这是一个分组,匹配手机号码的第二位数字。它有两个部分:
    • [3-57-9]\d:匹配 3、4、5、7、8、9 中的任意一个数字,后面跟一个任意数字 \d。
    • 6[1-79]:匹配以 6 开头,后面是 1、2、3、4、5、7、8、9 中的任意一个数字。
  • \d{8}:匹配后面的 8 个数字,组成手机号码的主体部分。
  • $:匹配字符串的结尾。

因此,这个正则表达式匹配的是中国大陆的手机号码,包括常见的手机号段(例如:130、138、159 等),并且可以选择匹配前面的 "+86" 和 "0" 前缀,但不包括其他的字符。

这个正则表达式用于从URL参数中匹配含有特定格式的 token 的字符串。具体解释如下:


(\?|\&)token=.*([0-z]+)\/
1
2
  • (\?|\&):这是一个分组,匹配一个问号 ? 或者一个和号 &。这是用来匹配参数的开始,因为 URL 参数可以在问号 ? 或者其他参数之间使用和号 & 进行分隔。
  • token=:这是字面量,匹配字符串 "token="。
  • .*:匹配零个或多个任意字符。这里用来匹配 token= 后面的值部分。
  • ([0-z]+):这是一个分组,匹配至少一个连续的字母(大小写不限)或数字字符。
  • \/:匹配斜杠字符 /。这是用来确保 token 后面的值在匹配结束后以斜杠结尾,可能是为了更准确地捕获需要的内容。

综合起来,这个正则表达式用来从 URL 参数中找到类似 token=... 格式的部分,并从中捕获 token 后面的值,该值至少包含一个字母(大小写不限)或数字字符,并以斜杠结尾。请注意,这个正则表达式中有一个小问题,[0-z] 这个字符范围超出了有效的 ASCII 范围,应该是 [0-9a-zA-Z] 才正确,以匹配大小写字母和数字。

编辑 (opens new window)
上次更新: 2024/02/22, 14:03:19
ssh原理
性能测试

← ssh原理 性能测试→

最近更新
01
spark基础
02-22
02
mysql读写分离和分库分表
02-22
03
数据库迁移
02-22
更多文章>
Theme by Vdoing | Copyright © 2019-2024 Evan Xu | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式