什么是正则表达式?

2023-10-27

1. 什么是正则表达式?

正则表达式是⼀组由字⺟和符号组成的特殊⽂本,它可以⽤来从⽂本中找出满⾜你想要的格式的句⼦。

⼀个正则表达式是⼀种从左到右匹配主体字符串的模式

“Regular expression”这个词⽐较拗⼝,我们常使⽤缩写的术语“regex”或“regexp”。

正则表达式可以从⼀个基础字符串中根据⼀定的匹配模式替换⽂本中的字符串、验证表单、提取字符串等等。

想象你正在写⼀个应⽤,然后你想设定⼀个⽤户命名的规则,让⽤户名包含字符、数字、下划线和连字符,以及限制字符的个数,好让名字看起来没那么丑。

我们使⽤以下正则表达式来验证⼀个⽤户名:

在这里插入图片描述
以上的正则表达式可以接受 john_doe 、 jo-hn_doe 、 john12_as 。但不匹配 Jo ,因为它包含了⼤写的字⺟⽽且太短了。

其意思就是用来匹配3到15个都是a到z、0到9、-、_里面的某个字符组成的字符串,开头是、结尾也是。
在这里插入图片描述

2. 基本匹配

正则表达式其实就是在执⾏搜索时的格式,它由⼀些字⺟和数字组合⽽成。

例如:⼀个正则表达式 the ,它表示⼀个规则:由字⺟ t 开始,接着是 h ,再接着是 e 。

"the" => The fat cat sat on the mat.

所以它匹配的是the,因为正则表达式是大小写敏感的,所以 the 不会匹配 The。

又比如正则表达式 123 匹配字符串 123 。它逐个字符的与输⼊的正则表达式做⽐较。

3. 元字符

正则表达式主要依赖于元字符。

元字符不代表他们本身的字⾯意思,他们都有特殊的含义。⼀些元字符写在⽅括号中的时候有⼀些特殊的意思。以下是⼀些元字符的介绍:

元字符 描述
. 句号匹配任意的那个字符除了换行符
[ ] 字符种类。匹配方括号里面的任何字符
[^ ] 否定的字符种类。匹配除了方括号里的任何字符
* 匹配大于等于0个重复的在*号之前的字符
+ 匹配>=1个重复的+号前的字符。
? 标记?之前的字符为可选.
{n,m} 匹配num个⼤括号之前的字符或字符集 (n <= num <= m).
(xyz) 字符集,匹配与 xyz 完全相等的字符串.
| 或运算符,匹配符号前或后的字符.
\ 转义字符,⽤于匹配⼀些保留的字符 [ ] ( ) { } . * + ? ^ $ \
^ 从开始⾏开始匹配.
$ 从末端开始匹配.

运算符示例
正则匹配字符集

参考:正则表达式深入浅出

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

什么是正则表达式? 的相关文章

  • 制作自己的 Kindle 电子书

    想象以下场景 你刚收到一台新的 Kindle Paperwhite 心中已然响起了轰轰烈烈的 我今年 或这个冬天 一定要阅读 100 本书 结果发现 想看的书 Amazon 上找不到 或者排版很糟糕 如何解决 自己动手做呗 准备工作 我使用
  • python正则表达式从字符串中提取数字的思路详解(转载)

    python从字符串中提取数字 使用正则表达式 用法如下 总结 匹配字符串的开始 匹配字符串的结尾 b 匹配一个单词的边界 d 匹配任意数字 D 匹配任意非数字字符 x 匹配一个可选的 x 字符 换言之 它匹配 1 次或者 0 次 x 字符
  • Shell脚本攻略:通配符、正则表达式

    目录 一 理论 1 通配符 2 正则表达式 二 实验 1 通配符 2 正则表达式 一 理论 1 通配符 1 概念 通配符只用于匹配文件名 目录名等 不能用于匹配文件内容 而且是已存在的文件或者目录 各个版本的shell都有通配符 这些通配符
  • 常用js

    1 去掉字符串两端的空格 对字符串去两端空格 function stringTrim str if str null str undefined return null 用正则表达式将前后空格 用空字符串替代 return str repl
  • Java使用 java.util.regex.Pattern 正则表达式校验参数值是否规范

    场景 java中我们可以利用 Pattern 注解对某个入参进行规则校验 但有些特殊参数在接口入口处不方便校验 需要在代码中校验 一 使用 Pattern 注解校验 Pattern regexp a zA Z0 9 message xxx号
  • SparkSQL HiveSQL 常用正则表达式

    SparkSQL HiveSQL 常用正则表达式 目录 SparkSQL HiveSQL 常用正则表达式 1 匹配汉字 2 匹配手机号码 3 匹配身份证 4 SparkSQL HiveSQL 常用正则函数 5 SparkSQL 分组 聚合
  • JavaScript最后分水岭——正则表达式

    个人简介 个人主页 微风洋洋 博客领域 编程基础 后端 写作风格 干货 干货 还是tmd的干货 精选专栏 JavaScript 支持洋锅 点赞 收藏 留言 好久不见 甚是想念 大家好 我是微风洋洋 也可以叫我洋锅 细心地小伙伴可能已经发现
  • Java正则表达式详解

    1 1 正则表达式的概念以及演示 正则表达式可以用一些规定的字符来制定规则 并用来校验数据格式的合法性 正则表达式就是用来验证各种字符串的规则 它内部描述了一些规则 我们可以验证用户输入的字符串是否匹配这个规则 正则表达式是一种强大的校验机
  • re模块----你也可以玩得很溜正则表达式

    目录 re模块 compile pattern flags 0 flag匹配模式 match pattern string flags 0 search pattern string flags 0 findall pattern stri
  • 对字符串进行正则取子串

    题目是这样的 对一段HTML网页内容 解析出其中所有的键值对 比如其中type text type为属性 text为值 二者为一个键值对 内容如下
  • 知道这20个正则表达式,能让你少写1,000行代码

    正则表达式 一个十分古老而又强大的文本处理工具 仅仅用一段非常简短的表达式语句 便能够快速实现一个非常复杂的业务逻辑 熟练地掌握正则表达式的话 能够使你的开发效率得到极大的提升 正则表达式经常被用于字段或任意字符串的校验 如下面这段校验基本
  • 正则表达式工具类

    在实际开发中总会使用到正则表达式匹配数据 我也是在后面查看了一些资料 下面写一个常用的正则表达式匹配集合 正则匹配模式 表示匹配字符串的开始位置 例外 用在中括号中 时 可以理解为取反 表示不匹配括号中字符串 表示匹配字符串的结束位置 表示
  • QRegexp、QRegularExpression的用法学习

    QRegexp QRegularExpression的用法学习 文章目录 QRegexp QRegularExpression的用法学习 QRegexp QRegularExpression 模式选项 QRegexp Regexp 由表达式
  • JS字符串替换函数全部替换方法

    color olive JS字符串替换函数 Replace 字符串1 字符串2 1 我们都知道JS中字符串替换函数是Replace 字符串1 字符串2 但是这个函数只能将第一次出现的字符串1替换掉 那么我们如何才能一次性全部替换掉了 将上面
  • Python进阶之CrawlSpider的应用及Scrapy配置项的引用

    1 CrawlSpider的应用 CrawlSpider可以根据规则自动分析链接的数据并按照正则的要求取出需要的数据 scrajpy startproject yg cd yg 注意 t crawl参数 scrapy genspider t
  • js基础之构造函数和类

    JS的构造函数和ES6的类是JS中很重要的概念 也是面向对象编程的核心 在本文中 我们将探讨JS的构造函数和ES6的类的基础知识 包括它们的定义 使用方法以及它们之间的区别 JS的构造函数 JS中的构造函数是一种特殊的函数 用于创建对象 它
  • 天梯赛字符串替换题 “ 6翻了” Python 正则表达式替换

    输入格式 输入在一行中给出一句话 即一个非空字符串 由不超过 1000 个英文字母 数字和空格组成 以回车结束 输出格式 从左到右扫描输入的句子 如果句子中有超过 3 个连续的 6 则将这串连续的 6 替换成 9 但如果有超过 9 个连续的
  • 网站开发之HTML基础知识及超链接(二)

    前面的文章我讲述了HTML的基础知识 包括 1 JSP前段设计及HTML基础介绍 2 HTML常用标记符 HEAD HTML属性 BODY设置背景 注释 FONT B I U 3 HTML设置段落格式 分段P 换行BR 标题样式Hn HR
  • git 建立分支仓库

    Git 命令版本 查看本地分支及追踪 找一个文件夹目录 clone 仓库 Git branch vv 查看所有分支 Git branch a 查看本地分支 git branch 查看远程分支 git branch r 创建本地分支dev g
  • 【golang】error parsing regexp: invalid or unsupported Perl syntax (正则表达式校验密码)

    要在 Go 中编写密码校验规则 确保密码不少于8位且包含数字和字母 你可以使用正则表达式和 Go 的 regexp 包来实现 以下是一个示例代码 错误示范 package main import fmt regexp func valida

随机推荐

  • oracle简单的备份

    企业之中这种备份肯定用不到 只是闲着没事简单备份一下自己的数据库 方便以后调数据 查阅 一 备份 1 打开cmd 切到oracle的bin目录 2 备份 exp scott 123456 file E oracle备份 scott back
  • CUDA优化:最大化内存吞吐量(官方文档翻译)

    毕业设计要翻译技术资料 3000 字 这里找了英伟达 CUDA TOOLKIT DOCUMENTATION 的 5 3 节 最大化内存吞吐量来 翻译一下 供参考 并希望此文对诸位的 CUDA 程序优化有所帮助 5 3 最大化内存吞吐量 最大
  • 【JPCS 独立出版】2022年机器人与人工智能国际会议(JCRAI 2022)

    2022年机器人与人工智能国际会议 JCRAI 2022 重要信息 会议网址 www jcrai org 会议时间 2022年10月14 16日 召开地点 中国成都 截稿时间 2022年8月30日 录用通知 投稿后2周内 出版社 Journ
  • 【论文&模型讲解】VideoBERT: A Joint Model for Video and Language Representation Learning

    文章目录 前言 0 摘要 1 Introduction 2 相关工作 3 模型 3 1 BERT 3 2 VideoBERT 4 实验与分析 4 1 数据集 4 2 视频和语言预处理 4 3 模型预训练 4 4 zero shot 动作分类
  • Windows与WSL子系统Docker和NVIDIA安装注意事项

    Windows与WSL子系统Docker和NVIDIA安装注意事项 WSL子系统NVIDIA驱动安装的注意事项 确保在windows上安装了CUDA11 8 一定确保CUDA确实安装 一定需要在WSL子系统再重新安装CUDA11 8 设置一
  • windows配置组策略所有题目

    sa禁用cmd 用户配置 策略 管理模板 系统 阻止访问命令提示符 sa隐藏c盘 用户配置 策略 管理员模板 windows组件 文件资源管理器 隐藏我的电脑中的这些指定的驱动 sa组桌面环境 用户配置 管理员模板 桌面 退出时不保存设置
  • python复习之零碎知识点

    马上就要考试了 相信大家在大的知识块上已经都复习的差不多了 今天带大家一起看一看较为细节的一些知识点吧 abs 用来计算复数的模长 python不支持字符与数字相加 gt gt gt a 1 Traceback most recent ca
  • tensorflow1.14.0安装教程--保姆级

    方法不止一种 下面仅展示一种 注 本人电脑为win11 anaconda的python版本为3 9 但tensorflow需要python版本为3 7 所以下面主要阐述将python版本改为3 7后的安装过程以及常遇到的问题 1 首先电脑安
  • GIT 撤销与回滚

    git 相信大家都会用 但是大家有没有遇到过 不小心把不该提交的文件 commit 了 小编整理了一些我在开发中常见的使用场景 供大家参考 场景一 糟了 我刚把不想要的代码 commit到本地仓库中了 但是还没有做push操作 这种场景称为
  • Java什么是对象?

    真实世界对象具有共同的两个特性 它们都有状态和行为 狗有状态 名字 颜色 品种 饥饿 和行为 叫 刨地 摇尾巴 自行车也有状态 当前的齿轮档位 当前的脚踏板频率 当前的速度 和行为 变速 变脚踏板速率 刹车 识别真实世界对象的状态和行为是开
  • ECLIPSE java类文件从实心变为空心,以及右键项目没有 build path,或build path显示 no available source的问题

    导入别人的项目 一开始问题是Java类文件的图标由实心变成了空心 这样的话类文件不能编译 main方法也不能执行 查了半天都说要重新配置 build path 可是我右键项目名根本就没有build path 然后有人说把右上角 javaEE
  • mysql 建表时at line 1_数据库学习笔记之MySQL(11)

    目录 01 三表复合查询 02 对比外键约束的作用 03 添加外键 建表时添加 正文 01 三表复合查询从性能角度讲 多表联合查询没有从单表查询后合并性能高 SELECT a id a name b tel c emailFROM tbl
  • ChatGLM-6B之SSE通信(Server-sent Events)

    目录 研究历程 只是感受 不感兴趣的这段可以跳过 直接看下边的正题 找 正题 二字 正题 1 SSE Server sent Events 2 ChatGLM的流式方法 3 ChatGLM之SSE通信 写这篇博客还是很激动开心的 因为是我经
  • 错误解决——搭建悟空crm9项目运行环境过程中遇到的一些问题和错误解决办法

    错误解决 搭建悟空crm9项目运行环境过程中遇到的一些问题和错误解决办法 一 安装jdk 二 安装Tomcat 问题 1 三 安装MySQL 四 安装Redis 问题 1 问题 2 问题 3 五 安装悟空crm9 问题 1 问题 2 问题
  • C# 静态类和sealed类(密封类)的区别

    网上看到很多文章写静态类 和密封类 但是鲜有它们的对比总结 在此简单总结一下 静态类 Static Class 静态类不能被实例化 其成员都是静态的 可以通过类名直接访问 静态类通常用于创建一组相关的静态方法和属性 提供一些全局功能或工具函
  • Golang爬虫终极杀器——Chromedp让你成为二维码登陆终结者(教程)

    Golang爬虫终极杀器 Chromedp让你成为二维码登陆终结者 教程 Github源码 chromedp 文章项目Gitee源码 1 Chromedp是什么 chromedp是一个更快 更简单的Golang库用于调用支持Chrome D
  • 二哈智能图像识别使用I2C导出识别结果到Wemos D1板

    学校比赛 购买了一块智能识别传感器模块huskylens 商家给了使用文档 但是别人用的官方uno板子来连接 我手里面只有ESP8266WiFi板子 只能把I2C驱动程序编译到esp8266上了 这是我的板子 说明文档里面只给了连接UNO
  • LZW编解码算法实现及编码效率分析

    一 编码原理 第二类算法的想法是企图从输入的数据中创建一个 短语词典 dictionary of the phrases 这种短语可以是任意字符的组合 编码数据过程中当遇到已经在词典中出现的 短语 时 编码器就输出这个词典中的短语的 索引号
  • 美国的有线电视节目提供商

    HBO HBO电视网 英文名 Home Box Office 是总部位于美国纽约的有线电视网络媒体公司 HBO电视网于1972年开播 全天候播出电影 音乐 纪录片 体育赛事等娱乐节目 与绝大多数电视频道不同的是 它不卖广告 经过22年的发展
  • 什么是正则表达式?

    什么是正则表达式 1 什么是正则表达式 2 基本匹配 3 元字符 1 什么是正则表达式 正则表达式是 组由字 和符号组成的特殊 本 它可以 来从 本中找出满 你想要的格式的句 个正则表达式是 种从左到右匹配主体字符串的模式 Regular