正则表达式---元字符
简介
正则表达式分为两种语法:POSIX标准的语法,Perl语法。
正则表达式的POSIX规范,分为基本型正则表达式(Basic Regular Expression, BRE),扩展型正则表达式(Extended Regular Expression,ERE) 和SRE(Simple Regular Expression)已经被弃用(deprecated,因为BRE和SRE都可以backward compatibility)。
grep
、vi
、sed
都属于BRE,元字符(metacharacter)需要转译(例如:在BRE中()
和{}
需要指定为\(\)
和\{\}
才可以使用,但是在ERE中则不需要进行转译)
egrep
、awk
属于ERE,元字符不需要转译
一个正则表达式通常称为一个模式(pattern)。
HINT! Perl语法被广泛使用!在grep中使用Perl语构的regex:grep -P
Basic concepts
1. Boolean “or”
|
2. Grouping
()
3. Quantification
+
?
*
{n}
{min,}
{,max}
{min,max}
4. Wildcard
.
PCRE(Perl Compatible Regular Expression)
Perl兼容正则表达式,元字符介绍
Metacharacter | Description | Example |
---|---|---|
\ | 将下一个字符标记为一个特殊字符(File Format Escape)或一个原义字符(Identity Escape,有12个“^$()*+?.[\{ ”)等。 | “n ”字符匹配n 字符,“\n ”匹配一个换行符。" \\ “匹配一个“\ ”” \( "匹配一个“( ” |
^ | 匹配以某个字符串开始的行 | ^abc 匹配 abc 不匹配 eabc |
$ | 匹配以某个字符串结束的行 | abc$ 匹配 ef abc 不匹配 abc ef |
* | 匹配前面的子表达式0次或多次 | |
+ | 匹配前面的子表示1次或多次 | |
? | 匹配前面的子表示0次或1次 | |
{n} | 匹配n次 | o{2} 可以匹配到 food 中的两个o 不能匹配到 Bob 中的一个o |
{n,} | 至少匹配n次 | |
{n,m} | 匹配最少n次,最多m次 | |
? | 非贪心量化(Non-greedy quantifiers)。 其跟随在其他重复修饰符( *,+,?,{n},{n,},{n,m} )后面时,匹配模式是非贪婪的。 | |
. | 匹配除"\r ""\n "之外的任何单个字符 | |
(pattern) | 捕获组(capturing group)。 匹配pattern,并获取这一匹配的子字符串。该子字符串用于后向引用。 | (\(\w+\))\s\1 匹配 (hello) (hello) world 中的(hello) (hello) |
(?:pattern) | 非捕获组(non-capturing group)。 匹配pattern,不获取这一匹配的子字符串,非获取匹配。即不存储匹配的子字符串用于后向引用 | |
(?=pattern) | 正向肯定预查(look ahead positive assert)。 在匹配pattern处,开始匹配查找字符串,这是一个非捕获匹配。 | Windows(?=95|98|NT|2000) 匹配 Windows2000 中的Windows ;不匹配 Windows3.1 中的Windows 。 |
(?!pattern) | 正向否定预查(negative assert)。 在不匹配pattern处查找匹配字符串。 | industr(?!y) 匹配 industries 不匹配 industry |
(?<=pattern) | 反向(look behind)肯定预查。 与正向肯定预查相似,只是方向相反。 非捕获匹配。 | (?<=95|98|NT|2000)Windows 能匹配到 2000Windows 中的Windows 不能匹配到 Windows2000 中的Windows |
(?<!pattern) | 反向否定预查。 与正向否定预查相似,只是方向相反 | (?<!95|98|NT|2000)Windows br/>能匹配到3.1Windows 不能匹配到 2000Windows |
x|y | 没有包围在() 里,范围是整个正则表达式 | |
[xyz] | 字符集合(character class)。匹配包含的任意一个字符。 | “[abc] ”可以匹配 plain 中的a 可以匹配到 branch 中的"b " “a ” “c ” |
[^xyz] | 排除型字符集合(negated character classes)。匹配未列出的任意字符 | |
[a-z] | 字符范围。 | 可以匹配到不在“a ”到“z ”范围内的任意字符 |
[^a-z] | ||
\d | 匹配一个数字字符。等价于[0-9] | |
\D | 匹配一个非数字字符。等价于[^0-9] | |
\s | 匹配任何空白字符,包括空格,制表符,换页符等。等价于[\f\n\r\t\v] | |
\S | 匹配任何非空白字符。等价于[^\f\n\r\t\v] | |
\w | 匹配包括下划线的任何单词字符。等价于“[A-Za-z0-9] ” | |
\W | 匹配包括下划线的任何非单词字符。等价于“[^A-Za-z0-9] ” |
Reference
维基百科:正则表达式
相关文章:
正则表达式---元字符
简介 正则表达式分为两种语法:POSIX标准的语法,Perl语法。 正则表达式的POSIX规范,分为基本型正则表达式(Basic Regular Expression, BRE),扩展型正则表达式(Extended Regular Expression&…...

数据库Redis篇
系列文章目录 第一章 C/C语言篇第二章 计算机网络篇第三章 操作系统篇第四章 数据库MySQL篇第五章 数据库Redis篇第六章 场景题/算法题第七篇 常见HR问题篇 本系列专栏:点击进入 后端开发面经 关注走一波 秋招阶段,面过很多大中小厂,积攒了…...
在区块链技术中,什么是权益证明(PoS)?
权益证明(Proof of Stake, PoS)是一种与工作量证明(Proof of Work, PoW)类似的共识机制,但它通过不同的方式来确保区块链网络的安全性和一致性。PoS的主要目标是解决PoW中存在的高能耗问题,并提高网络的扩展…...

Spring Boot——日志介绍和配置
1. 日志的介绍 在前面的学习中,控制台上打印出来的一大堆内容就是日志,可以帮助我们发现问题,分析问题,定位问题,除此之外,日志还可以进行系统的监控,数据采集等 2. 日志的使用 在程序中获取日…...

Python实现全国岗位招聘信息可视化分析(源码+论文+部署讲解)
项目源码&数据源获取 利用Python实现全国岗位招聘信息可视化分析 项目背景: 1.为企业招聘决策提供科学的依据和参考,可以帮助人力资源部门、招聘机构和求职者了解当前的就业形势、行业趋势和人才需求,从而做出更明智的招聘和求职决策。…...

【真题笔记】16年系统架构设计师要点总结
【真题笔记】16年系统架构设计师要点总结 存储部件接口嵌入式处理器产品配置配置管理用户文档系统文档CMM(能力成熟度模型)螺旋模型敏捷软件开发的方法学软件工具面向对象的分析模型设计模型COP(面向构件的编程)构件原子构件模块S…...

2024 CSS保姆级教程二 - BFC详解
前言 - CSS中的文档流 在介绍BFC之前,需要先给大家介绍一下文档流。 我们常说的文档流其实分为定位流、浮动流、普通流三种。 1. 绝对定位(Absolute positioning) 如果元素的属性 position 为 absolute 或 fixed,它就是一个绝对定位元素。 在…...

Knowledge-refined Denoising Network for Robust Recommendation
Knowledge-refined Denoising Network for Robust Recommendation(Sigir23) 摘要 知识图(KG)包含丰富的边信息,是提高推荐性能和可解释性的重要组成部分。然而,现有的知识感知推荐方法直接在KG和用户-项目…...

轴流风机和后倾式风机的安装要求
后向离心风机风压大,风量足,安装方便。因为不需要蜗壳,所以风道往往需要自行设计,而风道的合理与否,大大影响了后向离心风机的效率。那么后向离心风机的安装技巧有哪些?怎样达到风机的最佳使用效果呢&#…...
代码笔录1
10-16 出入栈序列是否合法 // // Created by 86184 on 2024/10/16. // #include <stdio.h>//IIOOOIO int jude(char s[]) {int count 0, i 0;while (s[i] ! \0) {if (s[i] I) count;else if (s[i] O) count--;else return 0;if (count < 0) return 0;i;}if (cou…...
强网杯2024 Web WP
强网杯2024 参考链接:https://mp.weixin.qq.com/s/Mfmg7UsL4i9xbm3V3e5HMA https://mp.weixin.qq.com/s/vV_II8TpyaGL4HUlUS57RQ PyBlockly 源码: from flask import Flask, request, jsonify import re import unidecode import string import ast …...

《双指针篇》---盛最多水的容器_Java(中等但简单)
题目传送门 1.首先计算出暂时的盛水体积 2.求暂时体积和最大体积max的最大值 3.更新right和left。如果height[left] > height[right] 那么right--否则left; class Solution {public int maxArea(int[] height) {int left 0,right height.length-1; int ret 0;while (lef…...
Linux: network: 环境:网络burst的一个原因,虚拟机感染病毒导致,外部网络设备太忙
最近碰到一个问题,测试人员在测试一周内的产品稳定性,带有的业务非常大。 总是不能满足需要的时长,总是在一段时间内出现丢包,业务出现错误的现象。从tshark/tcpdump的抓包看,确实在某个时间段,有一次十几秒…...

idea使用Translation插件实现翻译
1.打开idea,settings,选择plugins,搜索插件Translation,安装 2.选择翻译引擎 3.配置引擎,以有道词典为例 3.1 获取应用ID,应用秘钥 3.1.1 创建应用 点击进入有道智云控制台 3.1.2 复制ID和秘钥 3.2 idea设…...

[OS] sys_mmap() 函数+
流程图分析 1. 调用 sys_mmap() 步骤:当用户程序调用 mmap() 时,操作系统会进入 sys_mmap() 函数。作用:这是整个 mmap() 操作的入口。系统调用的实现从这里开始。 2. 提取参数(Fetch Argument) 步骤:从…...
轧钢机辊道多电动机传动控制系统
轧钢机辊道多电动机传动控制系统是一种复杂的工业自动化系统,主要用于控制轧钢车间中多个电动机驱动的辊道,以实现轧件的高效、稳定输送和加工。以下是对该系统的详细介绍: 系统组成 轧线辊道TDC控制器:作为系统的核心控制单元&a…...

使用 Nginx 部署 Python 项目
今天的目标是完成一个 Python Web 项目的线上部署,我们使用最新的 Django 项目搭建一个简易的 Web 工程,然后基于 Nginx 服务部署该 Python Web 项目。 1. 前期准备 1.1 安装虚拟环境pyenv 使用虚拟环境逐渐成了 python 项目开发中的一种主流方式。py…...
[笔记] SQL 优化
一. 数据库设计优化 1. 选择合适的字段类型 设计表时,尽量选择存储空间小的字段类型: 整型字段:从TINYINT、SMALLINT、INT到BIGINT。小数类型:对于金额等需精确计算的数值使用DECIMAL,避免使用FLOAT和DOUBLE。字符串…...

【InfluxDB】InfluxDB 2.x基础概念及原理
InfluxDB简介 什么是时序数据库 时序数据库,全称时间序列数据库(Time Series Database,TSDB),用于存储大量基于时间的数据。时序数据库支持时序数据的快速写入、持久化,多维度查询、聚合等操作࿰…...

.net Core 使用Panda.DynamicWebApi动态构造路由
我们以前是通过创建controller来创建API,通过controller来显示的生成路由,这里我们讲解下如何不通过controller,构造API路由 安装 Panda.DynamicWebApi 1.2.2 1.2.2 Swashbuckle.AspNetCore 6.2.3 6.2.3添加ServiceAction…...

【kafka】Golang实现分布式Masscan任务调度系统
要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...

黑马Mybatis
Mybatis 表现层:页面展示 业务层:逻辑处理 持久层:持久数据化保存 在这里插入图片描述 Mybatis快速入门 
UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...

R语言速释制剂QBD解决方案之三
本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...
现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?
现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)ÿ…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...