shell脚本正则表达式

news2024/12/24 20:44:48

目录

一. 正则表达式定义

二. 基本正则表达式

1. 元字符

2. 表示次数

3. 位置锚定

4. 分组或其他

二. 拓展正则表达式

1. 表示次数

2. 表示分组


一. 正则表达式定义

正则表达式(REGEXP ):由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意义,而表示控制或通配的功能,类似于增强版的通配符功能。

区别:①. 正则表达式:匹配的是文章中的字符。

           ②. 通配符:匹配的是文件名。

正则表达式分为:基本正则表达式、扩展正则表达式。

二. 基本正则表达式

基本正则表达式:①. 元字符

                             ②. 表示次数

                             ③. 位置锚定

                             ④. 分组和其他

1. 元字符

.               #匹配任意单个字符,可以是一个汉字  
[]              #匹配指定范围内的任意单个字符
[^]             #匹配指定范围外的任意单个字符

注意:
. 在 [ ] 中就是.

[:alnum:]       #字母和数字
[:alpha:]       #代表任何英文大小写字符,亦即 A-Z, a-z
[:lower:]       #小写字母,示例:[[:lower:]],相当于[a-z]
[:upper:]       #大写字母
[:blank:]       #空白字符(空格和制表符)
[:space:]       #包括空格、制表符(水平和垂直)、换行符、回车符等各种类型的空白
[:cntrl:]       #不可打印的控制字符(退格、删除、警铃...)
[:digit:]       #十进制数字
[:xdigit:]      #十六进制数字
[:graph:]       #可打印的非空白字符
[:print:]       #可打印字符
[:punct:]       #标点符号

\w              #匹配单词构成部分,等价于[_[:alnum:]]
\W              #匹配非单词构成部分,等价于[^_[:alnum:]]
\S              #匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
\s              #匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]

2. 表示次数

*       #匹配前面的字符任意次,包括0次,贪婪模式:尽可能长的匹配
.*      #任意长度的任意字符,不包括0次
\?      #匹配其前面的字符出现0次或1次,即:可有可无
\+      #匹配其前面的字符出现最少1次,即:肯定有且 >=1 次
\{n\}   #匹配前面的字符n次
\{m,n\} #匹配前面的字符至少m次,至多n次
\{,n\}  #匹配前面的字符至多n次,<=n
\{n,\}  #匹配前面的字符至少n次

3. 位置锚定

^               #行首锚定, 用于模式的最左侧
$               #行尾锚定,用于模式的最右侧
^PATTERN$       #用于模式匹配整行 (单独一行  只有root)
^$              #空行
^[[:space:]]*$  #空白行


\< 或 \b        #词首锚定,用于单词模式的左侧(连续的数字,字母,下划线都算单词内部)
\> 或 \b        #词尾锚定,用于单词模式的右侧
\<PATTERN\>     #匹配整个单词

4. 分组或其他

分组:() 将多个字符捆绑在一起,当作一个整体处理,如:(root)+

后向引用:分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些变量的命名

方式为: \1, \2, \3, ...

\1 表示从左侧起第一个左括号以及与之匹配右括号之间的模式所匹配到的字符

二. 拓展正则表达式

1. 表示次数

*      #匹配前面字符任意次
?      #0或1次
+      #1次或多次
{n}    #匹配n次
{m,n}  #至少m,至多n次
{,n}   #匹配前面的字符至多n次,<=n,n可以为0
{n,}   #匹配前面的字符至少n次,<=n,n可以为0

2. 表示分组

()      #分组,将多个字符捆绑在一起,当作一个整体处理
\1, \2, #向后引用
|       #或者  
a|b     #a或b
C|cat   #C或cat
(C|c)at #Cat或cat

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1260997.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用 ChatGPT 创建 Makefile 构建系统:从 Docker 开始

使用 Docker 搭配 ChatGPT 创建 Makefile 构建系统 Makefile 构建系统是嵌入式软件团队实现其开发流程现代化的基础。构建系统不仅允许开发人员选择各种构建目标&#xff0c;还可以将这些构建集成到持续集成/持续部署 (CI/CD) 流程中。使用诸如 ChatGPT 这样的人工智能 (AI) 工…

vatee万腾的科技征途:Vatee数字化力量的新视野

在科技的浪潮中&#xff0c;Vatee万腾正展开一场引人注目的科技征途&#xff0c;以其独特的数字化力量描绘出一片新的视野。这不仅是一次技术的升级&#xff0c;更是一场对未来的全新探索&#xff0c;为我们带来了前所未有的数字化时代。 Vatee万腾以其卓越的技术实力和前瞻性的…

VR全景技术助力政务服务大厅数字化,打造全新政务服务体验

引言&#xff1a; 随着科技的飞速发展&#xff0c;虚拟现实&#xff08;VR&#xff09;技术逐渐走进人们的视野。VR全景技术作为VR领域的一项重要应用&#xff0c;以其沉浸式、交互式的特点&#xff0c;正逐渐渗透到各行各业。政务服务大厅作为相关部门与民众之间的桥梁&#…

智控openwrt调试

1、移植openwrt 如何加入需要编译的内核。 由于内核与openwrt版本不对需要集成&#xff0c; 在/lib/modules/* 加载模块的目录搞错了。 2、从页面如何垂直调用 2.1页面 使用LUCI&#xff0c;LUCIUCILUA UCI 是 Openwrt 中为实现所有系统配置的一个统一接口&#xff0c;英…

vr红色教育虚拟展馆全景制作提升单位品牌形象

720全景展馆编辑平台以其独特的优势&#xff0c;为展览行业带来了革命性的变革。这种创新的技术应用为参展商提供了更高效、更便捷、更全面的展示解决方案&#xff0c;进一步提升了展览行业的水平和影响力。 一、提升展示效果&#xff0c;增强品牌形象 720全景展馆编辑平台通过…

AIGC系列之:Vision Transformer原理及论文解读

目录 相关资料 模型概述 Patch to Token Embedding Token Embedding Position Embedding ViT总结 相关资料 论文链接&#xff1a;https://arxiv.org/pdf/2010.11929.pdf 论文源码&#xff1a;https://github.com/google-research/vision_transformer PyTorch实现代码…

线上异步任务突然不能回写100%

项目场景&#xff1a; 需求是一个作业&#xff0c;需要运行一组sql&#xff0c;所有sql运行完成&#xff0c;更新作业进度为100%&#xff0c;状态为完成。sql需要是在大数据平台&#xff0c;通过yarn调度&#xff0c;异步执行。 kafka监听每个sql的执行状态&#xff0c;所有sql…

设计问卷调查问题的技巧二:确定问题的结构与顺序

上篇文章中&#xff0c;我们了解到设计问卷调查问卷的技巧有保持问题中立、少用开放式问题、保持全名平衡的答案集、谨慎设置单一回答。在这篇文章中&#xff0c;我们将继续深入探讨设计问卷调查问题的剩余5大技巧&#xff01; Tip5&#xff1a;注意问题的顺序 虽然您可以任意…

蓝桥杯刷题day01——字符串中的单词反转

题目描述 你在与一位习惯从右往左阅读的朋友发消息&#xff0c;他发出的文字顺序都与正常相反但单词内容正确&#xff0c;为了和他顺利交流你决定写一个转换程序&#xff0c;把他所发的消息 message 转换为正常语序。 注意&#xff1a;输入字符串 message 中可能会存在前导空…

机器学习中的概率与统计知识点汇总

引言 在学习高级知识时&#xff0c;理解基本概念至关重要。为什么&#xff1f;因为基础知识是您构建高级知识的基础。如果你把更多的东西放在薄弱的基础之上&#xff0c;它最终可能会分裂&#xff0c;这意味着你最终无法完全理解你所学的任何知识。因此&#xff0c;让我们尝试…

探索编程在现代社会的无限价值

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f33a; 仓库主页&#xff1a; Gitee &#x1f4ab; Github &#x1f4ab; GitCode &#x1f496; 欢迎点赞…

有一种浪漫,叫接触Linux

大家好&#xff0c;我是五月。 嵌入式开发 嵌入式开发产品必须依赖硬件和软件。 硬件一般使用51单片机&#xff0c;STM32、ARM&#xff0c;做成的产品以平板&#xff0c;手机&#xff0c;智能机器人&#xff0c;智能小车居多。 软件用的当然是以linux系统为蓝本&#xff0c…

element table滚动条失效

问题描述:给el-table限制高度之后滚动条没了 给看看咋设置的&#xff1a; <el-table:data"tableData"style"width: 100%;"ref"table"max-height"400"sort-change"changeSort">对比了老半天找不出问题&#xff0c;最后…

时间序列预测 — LSTM实现多变量多步负荷预测(Keras)

目录 1 数据处理 1.1 数据集简介 1.2 数据集处理 2 模型训练与预测 2.1 模型训练 2.2 模型多步预测 2.3 结果可视化 1 数据处理 1.1 数据集简介 实验数据集采用数据集6&#xff1a;澳大利亚电力负荷与价格预测数据&#xff08;下载链接&#xff09;&#xff0c;包括数…

国内某知名半导体公司:实现虚拟化环境下的文件跨网安全交换

立足特定应用领域的创新型企业 上海某半导体公司是中国10大集成电路设计公司之一的子公司。该半导体公司是一家特色工艺集成电路芯片制造企业&#xff0c;专注模拟电路、功率器件所需的特色生产工艺研发与制造&#xff0c;。 该半导体公司不断追求创新&#xff0c;提高自身产…

Leetcode—907.子数组的最小值之和【中等】

2023每日刷题&#xff08;四十二&#xff09; Leetcode—907.子数组的最小值之和 算法思想 参考自y神思想 实现代码 class Solution { public:int sumSubarrayMins(vector<int>& arr) {long long ans 0;const int mod 1e97;int n arr.size();stack<int>…

万字详解,和你用RAG+LangChain实现chatpdf

像chatgpt这样的大语言模型(LLM)可以回答很多类型的问题,但是,如果只依赖LLM,它只知道训练过的内容,不知道你的私有数据:如公司内部没有联网的企业文档,或者在LLM训练完成后新产生的数据。(即使是最新的GPT-4 Turbo,训练的数据集也只更新到2023年4月)所以,如果我们…

在龙蜥 anolis os 23 上 源码安装 PostgreSQL 16.1

在龙蜥 OS 23上&#xff0c;本来想使用二进制安装&#xff0c;结果发现没有针对龙蜥的列表&#xff1a; 于是想到了源码安装&#xff0c;下面我们列出了PG源码安装的步骤&#xff1a; 1.安装准备 1.1.创建操作系统组及用户 groupadd postgres useradd -g postgres -m postgr…

深度学习回顾:七种网络

一、说明 本文 揭开CNN、Seq2Seq、Faster R-CNN 和 PPO &#xff0c;以及transformer和humg-face— 编码和创新之路。对于此类编程的短小示例&#xff0c;用于对照观察&#xff0c;或做学习实验。 二、CNN网络示例 2.1 CNN用mnist数据集 CNN 专为图像处理而设计&#xff0c;包…

基于SpringBoot与Vue的增城高校二手物品交易系统

基于SpringBoot 与 Vue 的增城高校二手物品交易系统的设计与实现 摘要&#xff1a;随着生活水平和在校大学生消费能力的提高&#xff0c;学生用品的迭代速度越来越快&#xff0c;导致大量的闲置物品无法及时完成处理&#xff0c;而传统的线下摆摊等方式处理不仅效率低&#xf…