Shell编程--正则表达式(基本/拓展元字符、正则判断)

正则表达式

  • 1.基本元字符
  • 2.拓展元字符
  • 3.正则判断=~

1.基本元字符

字符功能示例
^行首定位符^love
$行尾定位符love$
.匹配单个字符l…e
*匹配前导符0到多次ab*love
.*匹配任意多个字符(贪婪匹配)ab.*love
[]匹配方括号中任意一个字符[lL]ove
[-]匹配指定范围内的一个字符[a-zA-Z0-9]ove
[^]匹配不在指定组里的字符[^a-z0-9]ove
\用来转义元字符love\.
\<词首定位符\<love
\>词尾定位符love>\

练习:

[root@localhost ~]# cat test.txt
Love
love
loveyou
aaabbblove
a123love
www.love.com
i love you
do you love me//以lo开头
[root@localhost ~]# grep  ^lo test.txt 
love
loveyou
[root@localhost ~]# grep -i ^lo test.txt    //-i不区分大小写
Love
love
loveyou//以me结尾
[root@localhost ~]# grep  me$ test.txt
do you love me//匹配单个字符,一个.代表一个字符
[root@localhost ~]# grep  y.u test.txt
loveyou
i love you
do you love me
[root@localhost ~]# grep  l.e test.txt
[root@localhost ~]# grep  l..e test.txt
love
loveyou
aaabbblove
a123love
www.love.com
i love you
do you love me//匹配前导符0到多次;前导符是"a" 即*前面a有0次到多次
[root@localhost ~]# grep a*l test.txt
love
loveyou
aaabbblove
a123love
www.love.com
i love you
do you love me//贪婪匹配;匹配任意多个字符;即*的前导符是"a." 但是"."可以匹配任意单个字符
[root@localhost ~]# grep a.*l test.txt
aaabbblove
a123love//匹配中括号中任意一个字符
[root@localhost ~]# grep a[0-9]l*  test.txt
a123love//匹配指定范围内的一个字符
[root@localhost ~]# grep a[0-9a-z]l*  test.txt
aaabbblove
a123love//匹配不在指定组里的字符
[root@localhost ~]# grep a[^0-9]  test.txt
aaabbblove//转义匹配
[root@localhost ~]# grep www\.  test.txt
www.love.com
[root@localhost ~]# cat >>./test.txt<<eof
l*o*v*e
eof
[root@localhost ~]# grep * test.txt
[root@localhost ~]# grep \* test.txt
[root@localhost ~]# l*o*v*e
//单引号和双引号这里作用相同
[root@localhost ~]# grep "*" test.txt
[root@localhost ~]# l*o*v*e
[root@localhost ~]# grep '*' test.txt
[root@localhost ~]# l*o*v*e

2.拓展元字符

(示例在grep正则过滤)

字符功能示例
+匹配一次或多次前导字符[a-z]+ove
?匹配零次或一次前导字符lo?ve
a|b匹配a或blove|hate
x{m}字符x重复m次o{5}
x{m,}字符x重复至少m次o{5,}
x{m,n}字符x重复m到n次o{5,10}
()字符组

3.正则判断=~

[root@localhost ~]# num1=1 
//运用正则,判断需要[[ ]]
//注意:^在[]内表示取反,^在[]外表示以什么开头
//=~ 用于正则表达式匹配
[root@localhost ~]# [[ $num1 =~ ^[0-9] ]] && echo "yes" || echo "no"
yes
[root@localhost ~]# [[ $num1 =~ [^0-9] ]] && echo "yes" || echo "no"
no[root@localhost ~]# num3=1b1 
[root@localhost ~]# [[ $num3 =~ ^[0-9] ]] && echo "yes" || echo "no"
yes
[root@localhost ~]# [[ $num3 =~ ^[0-9]+$ ]] && echo "yes" || echo "no"
no    //num3是纯数字,这里才会是yes
[root@localhost ~]# [[ $num3 =~ [^0-9] ]] && echo "yes" || echo "no"
yes
[root@localhost ~]# [[ $num3 =~ ^[^0-9] ]] && echo "yes" || echo "no"
no
[root@localhost ~]# [[ $num3 =~ ^[0-9][a-z][0-9]+$ ]] && echo "yes" || echo "no"
yes//或:
if [[ $num3 =~ ^[0-9]+$ ]];then  echo "yes" ;else echo 'no'; fi[root@localhost ~]# num=1.6
[root@localhost ~]# [[ $num =~ ^[0-9]\.[0-9]+$ || $num =~ ^[0-9]+$ ]] && echo "yes" || echo "no"       //输入的只能是数字(包括小数)
yes
[root@localhost ~]# [[ $num =~ . && echo "yes" || echo "no"
yes    //1.6作为字符串被匹配

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

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

相关文章

机器学习降维技术全面对比评析

简介 在机器学习领域&#xff0c;处理高维数据带来了与计算效率、模型复杂性和过度拟合相关的挑战。降维技术提供了一种解决方案&#xff0c;将数据转换为低维表示&#xff0c;同时保留基本信息。本文旨在比较和对比一些突出的降维技术&#xff0c;涵盖线性和非线性方法。 线性…

vue实现小球掉落

首先&#xff0c;将小球儿动画代码封装成组件&#xff0c;创建个文件&#xff0c;例如qiu.js let createBall (left, top,box) > {// 点击事件 const {clientX,clienty} ev createBall(clientX,clienty)const ball document.createElement(div);ball.style.position a…

有道云笔记编辑 Markdown 文件 - GitHub README.md

有道云笔记编辑 Markdown 文件 - GitHub README.md 1. 新建 -> Markdown2. GitHub README.mdReferences 1. 新建 -> Markdown ​ 2. GitHub README.md ​​​ References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/

Prior information

“Prior information”&#xff08;先验信息&#xff09;指的是在特定事件或观察之前已有的知识或信息。在统计学、机器学习和贝叶斯推断等各个领域中&#xff0c;先验信息在影响或指导分析或决策过程中发挥着至关重要的作用。 以下是一些常见使用 “先验信息” 这个术语的背景…

066:vue中实现二维数组的全选、全不选、反选、部分全选功能(图文示例)

第061个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下,本专栏提供行之有效的源代码示例和信息点介绍,做到灵活运用。 (1)提供vue2的一些基本操作:安装、引用,模板使用,computed,watch,生命周期(beforeCreate,created,beforeM…

Vue3+Vite连接高德地图JS API——地图显示、输入搜索

1 开通高德地图Web端JS API服务 1、进入高德地图API官网&#xff08;https://lbs.amap.com/&#xff09;&#xff1a; 2、注册登录。 3、进入控制台。 4、点击“应用管理”&#xff0c;点击“我的应用”&#xff0c;创建新应用。 5、添加Key&#xff0c;服务平台选择“Web端&…

BikeDNA(六)参考数据的内在分析2

BikeDNA&#xff08;六&#xff09;参考数据的内在分析2 1.数据完整性 见链接 2.网络拓扑结构 见链接 3.网络组件 断开连接的组件不共享任何元素&#xff08;节点/边&#xff09;。 换句话说&#xff0c;不存在可以从一个断开连接的组件通向另一组件的网络路径。 如上所述…

基于Hadoop的网上购物行为大数据分析及预测系统【flask+echarts+机器学习】前后端交互

有需要本项目或者部署的系统可以私信博主&#xff0c;提供远程部署和讲解 本研究基于淘宝用户行为的开源数据展开大数据分析研究&#xff0c;通过Hadoop大数据分析平台对阿里天池公开的开源数据集进行多维度的用户行为分析&#xff0c;为电商销售提供可行性决策。 首先我们将大…

基于遗传算法改进BP神经网络的承载力预测,基于ga-bp的破坏模式预测

目录 BP神经网络的原理 BP神经网络的定义 BP神经网络的基本结构 BP神经网络的神经元 BP神经网络的激活函数, BP神经网络的传递函数 遗传算法原理 遗传算法主要参数 遗传算法流程图 完整代码包含数据下载链接: 基于遗传算法改进BP神经网络的承载力预测,基于ga-bp的破坏模式预…

如何配置Kafka账号密码

背景 我们需要与第三方系统进行数据同步&#xff0c;需要搭建公网Kafka&#xff0c;Kafka默认是没有用户密码校验的&#xff0c;所以我们需要配置用户名密码校验。 配置 新增JAAS配置文件 在conf目录下新增kafka_server_jaas.conf文件&#xff0c;文件内容如下&#xff1a;…

ebpf学习

学习ebpf相关知识 参考资料: awesome-ebpf 文章目录 初识准备ebpf.io介绍cilium的介绍内核文档Brendan Greggs Blog 的介绍书籍Learning eBPFWhat is eBPF? 交互式环境视频 基础知识学习学习环境搭建书籍阅读 项目落地流程整理环境搭建内核编译bcc环境变量zliblibelflibbpflib…

python统计分析——小提琴图(sns.violinplot)

参考资料&#xff1a;用python动手学统计学&#xff0c;帮助文档 使用seaborn.violinplot()函数绘制箱线图 sns.violinplot()的做出来的小提琴图比plt.violinplot()更像小提琴。 import numpy as np import pandas as pd from matplotlib import pyplot as plt import seabo…

Spark的内核调度

目录 概述 RDD的依赖 DAG和Stage DAG执行流程图形成和Stage划分 Stage内部流程 Spark Shuffle Spark中shuffle的发展历程 优化前的Hash shuffle 经过优化后的Hash shuffle Sort shuffle Sort shuffle的普通机制 Job调度流程 Spark RDD并行度 概述 Spark内核调度任务: 1…

强化学习应用(四):基于Q-learning的无人机物流路径规划研究(提供Python代码)

一、Q-learning简介 Q-learning是一种强化学习算法&#xff0c;用于解决基于马尔可夫决策过程&#xff08;MDP&#xff09;的问题。它通过学习一个价值函数来指导智能体在环境中做出决策&#xff0c;以最大化累积奖励。 Q-learning算法的核心思想是通过不断更新一个称为Q值的…

vue表格插件vxe-table导出 excel

vxe-table 默认支持导出 CSV、HTML、XML、TXT格式的文件&#xff0c;不支持 xlsx 文件 要想导出 xlsx 文件&#xff0c;需要使用 vxe-table-plugin-export-xlsx 依赖 参考&#xff1a;https://cnpmjs.org/package/vxe-table-plugin-export-xlsx/v/2.1.0-beta 1.安装 npm inst…

jetson orin nano 使用yolov8导出engine

1. 导出onnx 经过前面训练&#xff0c;得到了best.pt模型&#xff0c;现在想要使用tensorrt进行推理&#xff0c;需要先导出为onnx格式&#xff0c;再转化为engine格式。 yolo export modelbest.pt formatonnx opset12 simplifyTrue2.解决错误 在导出过程中&#xff0c;可能…

Android代码混淆

Android之代码混淆 代码混淆的作用设置混淆1. 在模块目录下的 build.gradle 文件中配置以下代码2. 在 proguard-rules.pro 文件中添加混淆规则 通用混淆规则常用匹配符常用命令注意事项如何查看是否已混淆 代码混淆的作用 1.令 APK 难以被逆向工程&#xff0c;即很大程度上增加…

开源项目CuteSqlite开发笔记(七):CuteSqlite释放BETA版本啦

经过大半年的开发&#xff0c;CuteSqlite程序代码不知不觉来到了6万行&#xff0c;有效行数4万行&#xff0c;CuteSqlite开发完成了一个小版本&#xff0c;进入下一个阶段&#xff0c;并于2024元旦释放BETA版本&#xff0c;有兴趣的朋友可以下载试用。 GitHub下载https://gith…

Handsfree_ros_imu:ROS机器人IMU模块的get_imu_rpy.py文件学习记录

上一篇博客写了关于Handsfree_ros_imu&#xff1a;ROS机器人IMU模块ARHS姿态传感器&#xff08;A9&#xff09;Liunx系统Ubuntu20.04学习启动和运行教程&#xff1a; https://blog.csdn.net/qq_54900679/article/details/135539176?spm1001.2014.3001.5502 这次带来get_imu_r…

池化、线性、激活函数层

一、池化层 池化运算是深度学习中常用的一种操作&#xff0c;它可以对输入的特征图进行降采样&#xff0c;从而减少特征图的尺寸和参数数量。 池化运算的主要目的是通过“收集”和“总结”输入特征图的信息来提取出主要特征&#xff0c;并且减少对细节的敏感性。在池化运算中…