正则表达式:基础知识学习
文章目录
- 概念
- 作用
- 匹配
- 提取
- 替换
- 特点
- 组成
- 普通字符
- 元字符
- 元字符
- 常用案例
概念
正则表达式最初是科学家对人类神经系统的工作原理进行研究,目前在编程语言中得到广泛运用
正则表达式通常被用来检索、替换、选取那些符合某个模式(规则)的文本
正则表达式是对字符串操作的一种逻辑公式,用事先定义好的一些特定字符、以及这些特定字符的组合,组成一个"规则字符串",这个"规则字符串"用来表达对字符串的一种过滤逻辑。
作用
匹配
判断给定的字符串是否符合正则表达式的过滤逻辑
提取
可以通过正则表达式,从字符串中获取需要的特定部分
替换
正则有很强大的字符串替换能力
特点
- 灵活性、逻辑性和功能性非常强
- 运用广。比如:爬虫
- 对于刚接触的人来说,比较绕、晦涩、难懂
组成
普通字符
‘huan’、‘kai’、‘123’
元字符
正则表达式中有特殊意义的字符
- \d 匹配数字
- \w 匹配字母或数字或下划线
元字符
在线测试:正则表达式在线测试
常用元字符
元字符 | 描述 |
---|---|
\d | 匹配一个数字字符。等价于[0-9] |
\D | 匹配一个非数字字符。等价于[^0-9] |
\w | 匹配包括下划线的任何单词字符。等价于"[A-Za-z0-9]" |
\W | 匹配任何非单词字符。等价于"[^A-Za-z0-9]" |
\s | 匹配任何空白字符,包括空格、制表符、换页符等等。等价于[\f\n\r\t\v] |
\S | 匹配任何非空白字符。[^\f\n\r\t\v] |
. | 匹配除"\n"之外的任何单个字符。要匹配包括"\n"在内的任何字符,使用像"(.︱\n)"的模式 |
^ | 匹配输入字符串的开始位置.如果设置了RegExp对象的Multiline属性,^也匹配"\n"或"\r"之后的位置 |
$ | 匹配输入字符串的结束位置.如果设置了RegExp对象的Multiline属性,^也匹配"\n"或"\r"之前的位置 |
- 限定符
限定符 | 描述 |
---|---|
* | 匹配前面的子表达式零次或多次。例如,"zo*“能匹配"z"以及"zoo”。*等价于{0,} |
+ | 匹配前面的子表达式一次或多次。例如,“zo+“能匹配"zo"以及"zoo”,但不能匹配"z”。+等价于{1,} |
? | 匹配前面的子表达式零次或一次。例如,"do(es)?“可以匹配"does"或者"does"中的"do”。?等价于{0,1} |
{n} | n是一个非负整数。匹配确定的n次。例如,"o{2}"不能匹配"Bob"中的“o”,但是能匹配“food”中的两个o |
{n,} | n是一个非负整数。至少匹配n次。例如,"o{2}"不能匹配"Bob"中的“o”,但是能匹配“foooooood”中的所有o。"o{1}“等价于"o+”。"o{0,}"等价于o{*} |
{n,m} | 匹配任何非空白字符。等价于[^\f\n\r\t\v] |
- 其他
其他 | 描述 |
---|---|
[xyz] | 字符合集。匹配所有包含的任意一个字符。例如:[abc]可以匹配plain中的a |
[^xyz] | 负值字符合集。匹配未包含的任意一个字符。例如:[^abc]可以匹配plain中的p |
[a-z] | 字符范围。匹配指定范围内的任意字符。例如,[a-z]可以匹配任何在a到z范围内的任意字符 |
[^a-z] | 负值字符范围。匹配任何不在指定范围内的任意字符。例如,[^a-z]可以匹配任何不在a到z范围内的任意小写字母字符 |
() | 从两个直接两种选择一个分组。例如,gr(a|e)y匹配gray或者grey |
常用案例
- 用户名:^[a-z0-9_-]{3,16}$
- 密码:^[a-z0-9_-]{6,18}$
- 手机号码:^(13[0-9]|14[5|7]|15[0|1|2|3|4|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
- 邮编:^[1-9]\d{5}$
- 验证日期:^\d{4}-\d{1,2}-\d{1,2}
- 验证邮箱:^\w+@\w+.\w+&
正则表达式:基础知识学习相关推荐
- Javascript 基础知识学习
Javascript 基础知识学习 参考自:https://www.w3cschool.cn/javascript/ javascript 简介 JavaScript 是互联网上最流行的脚本语言,这门 ...
- 基础知识学习---牛客网C++面试宝典(五)C/C++基础之新特性
1.本栏用来记录社招找工作过程中的内容,包括基础知识学习以及面试问题的记录等,以便于后续个人回顾学习: 暂时只有2023年3月份,第一次社招找工作的过程: 2.个人经历: 研究生期间课题是SLAM在无 ...
- 万物之始正则表达式全解析三部曲(上篇)-正则表达式基础知识及语法
前言 各位小伙伴大家好,接下来几天时间,我会从多个角度对正则表达式进行系统阐述,让你了解正则表达式的前世今生. 以下是博主整理的Linux知识专栏,喜欢的小伙伴可根据自己的需求自行订阅. Linux疑 ...
- 计算机二级二叉树基础知识,2017年计算机二级公共基础知识学习教程:树与二叉树...
(六)树与二叉树 1.树的基本概念 树是一种简单的非线性结构.在树结构中,数据元素之间有着明显的层次结构.在树的图形表示中,用直线连接两端的结点,上端点为前件,下端点为后件. 在树结构中,每一个结点只 ...
- Python 基础知识学习笔记——NumPy
Python基础知识学习笔记--NumPy 与 matlab 优秀的矩阵运算类似,python 提供了 numpy 库,这对熟悉 matlab 的用户来说非常友好.向量.矩阵和多维数组是数值计算中必不 ...
- Python 基础知识学习笔记——OpenCV(1)
Python 基础知识学习笔记--OpenCV(1) OpenCV是一个开源的跨平台计算机视觉和机器学习软件库,它轻量而且高效,被广泛的使用. 整理一下OpenCV学习笔记,以防忘记. 文章目录 Py ...
- Python基础知识学习笔记——Matplotlib绘图
Python基础知识学习笔记--Matplotlib绘图 整理python笔记,以防忘记 文章目录 Python基础知识学习笔记--Matplotlib绘图 一.绘图和可视化 1.导入模块 2.一个简 ...
- python基础知识学习笔记(2)
python基础知识学习笔记(2) 整理一下python基础知识,以防忘记 文章目录 python基础知识学习笔记(2) python简洁的一行代码 python简洁的一行代码 1.交换两个变量 # ...
- python基础知识学习笔记(1)
python 基础知识学习笔记(1) 总结一下Python基础知识,以防忘记. 文章目录 python 基础知识学习笔记(1) 一.起步 1.python安装与编译环境 二.变量和简单数据类型 三.列 ...
- qt checkbox 选中事件_Qt基础知识学习
Qt基础知识学习 Qt C++ SQLite ★★★★★ Qt · 简介 Qt是由Qt Company开发的面向对象的跨平台C++图形用户界面应用程序开发框架. 前期 · 准备 01 辨析Qt(开 ...
最新文章
- AT89C51 单片机在电话远程控制器中的应用
- 设计需要冲击力:「不怕没品味的人,就怕没品味的人用心」
- Linux配置rsylogs日志发送,syslog强大而安全的日志处理系统
- git 分支的创建和切换
- mysql的服务器编号_mysql主从服务器配置.doc
- 简易 Vue 构建--篇二
- placeholder字体大小以及颜色的修改
- exe文件注册服务的方法
- BackgroundWorker使用总结
- Exadata使用EXAchk进行健康检查
- java与seo_seo和java哪个更好!
- 自定义列表数据自动循环向下滚动view(类似于通知通报消息)
- 华为手机的快应用是什么?如何使用快应用?
- MATLAB积分计算与积分变换
- 资产管理运维一体化 接入IOT、BIM的设备数字智慧化管理
- 如何给Mac OS 更新到指定版本系统
- python re正则模块详解
- js 根据身份证获取出生日期与年龄
- primocache学生党常用场景设置
- python说话语音代码_Python文字转换语音,让你的文字会「说话」,抠脚大汉秒变撒娇萌妹...
热门文章
- 145. PHP header status code
- 28. Element nodeValue 属性
- 2.2 Zend_Controller 基础
- oracle 11g表空间之最大最小
- maven编译时出现读取XXX时出错invalid LOC header bad signature
- [2019杭电多校第五场][hdu6630]permutation 2
- windows与linux多线程对比
- mvc 调试 f12 浏览器闪退
- Struts2 中的值栈的理解
- 把博客园的博客导出为MovableType的文本格式