linux系统正则表达式和grep过滤编辑器

正则和grep过滤

  • 正则表达式
    • 正则表达式基本元字符
    • 正则表达式扩展元字符
      • 判断使用正则
      • 过滤使用扩展元字符正则
    • 语法实例
    • 常用的正则表达式
      • 校验数字的表达式
      • 校验字符的表达式
      • 特殊需求表达式
      • 钱的输入格式:
  • grep过滤编辑器
    • 返回值
    • 参数

正则表达式

正则表达式(Regular Expression, RE)是一种字符模式, 用于在查找过程中匹配指定的字符. 在大多数程序里, 正则表达式都被置于两个正斜杠之间;

例如/l[oO]ve/就是由正斜杠界定的正则表达式, 它将匹配被查找的行中任何位置出现的相同模式. 在正则表达式中,元 字符是最重要的概念

元字符使正则表达式具有处理能力。所谓元字符就是指ß那些在正则表达式中具有特殊意义的专用字符,可以用来规定 其前导字符(即位于元字符前面的字符)在目标对象中的出现模式。

正则表达式:/正则表达式/ (两边的//叫做正则的边界)

正则表达式基本元字符

^:行首定位符
$:行尾定位符.:匹配任意单个字符
*:匹配前导符0-n次
.*:任意多个字符[]:匹配指定范围内的一个字符
[-]:匹配指定范围内的一个字符,连续的范围
[^]:匹配不在指定组内的字符\:用来转译元字符,脱意符(''  ""  \)转义符转译的是右侧字符\<:词首定位符     //定位词首
\>:词尾定位符     //定位词尾():集合字符,匹配稍后使用的字符的标签,用法:\(..\)x\{m\}:前方x字符重复m次
x\{m,\}:前方x字符重复m次以上
x\{m,n\}:前方x字符重复m-n次\(\) :匹配后的标签,匹配判断,通常在vim编辑器里面使用

正则表达式扩展元字符

判断使用正则

判断时候进行字符判断时可以使用:
= 等于 != 不等于  =~ 匹配使用正则判断需要
[[ 判断条件 ]][[ $num1 =~ ^[0-9]+$ ]]  //判断输入是不是数字
[[ $num1 =~ ^[0-9]{长度}+$ ]]     //判断输入是不是数字,并且符合长度
[[ $num1 =~ ^[0-9]{长度,长度}+$ ]]     //判断输入是不是数字,并且在长度之间

过滤使用扩展元字符正则

过滤时使用egrep或者grep -e+:匹配1-n个前导字符?:匹配0-1个前导字符a|b:匹配a或b():组字符,括号外与括号里面进行组合进行过滤x{m}:x字符重复m次
x{m,}:x字符至少重复m次
x{m,n}:x字符重复m-n次[ \t]:tab按键

语法实例

(expr): 捕获 expr 子模式,以 \1 使用它
(?:expr): 忽略捕获的子模式
(?=expr): 正向预查模式 expr
(?!expr): 负向预查模式 expr

常用的正则表达式

校验数字的表达式

数字:^[0-9]\*$n位的数字:^\d{n}$至少n位的数字:^\d{n,}$m-n位的数字:^\d{m,n}$零和非零开头的数字:^(0|[1-9][0-9]\*)$非零开头的最多带两位小数的数字:^([1-9][0-9]\*)+(\.[0-9]{1,2})?$带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})$正数、负数、和小数:^(\-|\+)?\d+(\.\d+)?$有两位小数的正实数:^[0-9]+(\.[0-9]{2})?$有1~3位小数的正实数:^[0-9]+(\.[0-9]{1,3})?$

校验字符的表达式

汉字:^[\u4e00-\u9fa5]{0,}$长度为3-20的所有字符:^.{3,20}$由26个英文字母组成的字符串:^[A-Za-z]+$由26个大写英文字母组成的字符串:^[A-Z]+$由26个小写英文字母组成的字符串:^[a-z]+$由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$中文、英文、数字包括下划线:^[\u4E00-\u9FA5A-Za-z0-9_]+$

特殊需求表达式

Email地址:^\w+([-+.]\w+)\*@\w+([-.]\w+)\*\.\w+([-.]\w+)\*$域名:a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?InternetURL:[a-zA-z]+://[^\s]\* 或 ^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]\*)?$手机号码:^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$国内电话码(0511-4405222、021-87888822):\d{3}-\d{8}|\d{4}-\d{7}帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):^[a-zA-Z]\w{5,17}$日期格式:^\d{4}-\d{1,2}-\d{1,2}一年的12个月(01~09和1~12):^(0?[1-9]|1[0-2])一个月的31天(01~09和1~31):^((0?[1-9])|((1|2)[0-9])|30|31)$

钱的输入格式:

有四种钱的表示形式我们可以接受:"10000.00" 和 "10,000.00", 和没有 "分" 的 "10000" 和 "10,000":^[1-9][0-9]\*$这表示任意一个不以0开头的数字,但是,这也意味着一个字符"0"不通过,所以我们采用下面的形式:^(0|[1-9][0-9]\*)$一个0或者一个不以0开头的数字.我们还可以允许开头有一个负号:^(0|-?[1-9][0-9]\*)$这表示一个0或者一个可能为负的开头不为0的数字.让用户以0开头好了.把负号的也去掉,因为钱总不能是负的吧。下面我们要加的是说明可能的小数部分:^[0-9]+(.[0-9]+)?$必须说明的是,小数点后面至少应该有1位数,所以"10."是不通过的,但是 "10" 和 "10.2" 是通过的:^[0-9]+(.[0-9]{2})?$这样我们规定小数点后面必须有两位,如果你认为太苛刻了,可以这样:^[0-9]+(.[0-9]{1,2})?$这样就允许用户只写一位小数.下面我们该考虑数字中的逗号了,我们可以这样:^[0-9]{1,3}(,[0-9]{3})\*(.[0-9]{1,2})?$1到3个数字,后面跟着任意个 逗号+3个数字,逗号成为可选,而不是必须:^([0-9]+|[0-9]{1,3}(,[0-9]{3})\*)(.[0-9]{1,2})?$

grep过滤编辑器

查找文档内容,常与正则搭配使用

grep:正常搜索egrep:支持扩展正则
\w:所有字母数字
\W:所有数字字母以外字符,称为非字符
\b:词边界fgrep:不支持正则pgrep:检索进程PID号码

返回值

0:寻找成功
1:没有寻找的字符
2:寻找字符的地址不对

参数

-q:静默
-v:去反
-R:在目录下所有的文件内递归搜索查询的内容
-o:只看查询的关键字
-B2:前两行
-A2:后两行
-C2:上下两行
-l:只找文件名
-n:带行号

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

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

相关文章

听GPT 讲Rust源代码--compiler(5)

File: rust/compiler/rustc_resolve/src/rustdoc.rs rust/compiler/rustc_resolve/src/rustdoc.rs是Rust编译器中解析文档注释的模块。该模块处理Rust源代码中的文档注释&#xff0c;提取出有用的信息&#xff0c;例如函数、结构体、枚举的名称、说明、参数、返回值等。它的主要…

羊大师讲解喝羊奶的好处多,降低脂肪风险还有不少!

羊大师讲解喝羊奶的好处多&#xff0c;降低脂肪风险还有不少&#xff01; 喝羊奶是一种非常健康的饮品&#xff0c;具有许多好处。相比于牛奶&#xff0c;羊奶含有更多的维生素和矿物质&#xff0c;对身体更有益。喝羊奶可以减少脂肪摄入&#xff0c;有助于降低患心血管疾病的…

基于Vue的宿舍管理系统

基于Vue的宿舍管理系统资源-CSDN文库 基于 Koa 以及 VueJS 的宿舍管理系统。 新增功能&#xff1a; 【楼层管理】添加『入住人员信息』模块&#xff0c;显示入住学生、性别、院系、专业的人数&#xff0c;可用饼图表示【用户信息】学生用户添加性别、院系、专业字段【楼层管理…

Gamebryo游戏引擎源码(gb2.6+gb3.2+gb4.0+中文手册)

Gamebryo游戏引擎源码&#xff0c;是源码&#xff0c;是源码&#xff0c;是源码。喜欢研究游戏的可以下载研究研究&#xff0c;代码写得很好&#xff0c;有很多借得参考的地方。 Gamebryo游戏引擎源码&#xff08;gb2.6gb3.2gb4.0中文手册&#xff09; 下载地址&#xff1a; 链…

rollup 插件开发示例

✨专栏介绍 Rollup专栏是一个专门介绍Rollup打包工具的系列文章。Rollup是一个现代化的JavaScript模块打包工具&#xff0c;它可以将多个模块打包成一个或多个文件&#xff0c;以提高应用程序的性能和加载速度。 在Rollup专栏中&#xff0c;您将学习到如何安装和配置Rollup&a…

专车数据层架构进化往事:好的架构是进化来的,不是设计来的

很多年前&#xff0c;读了子柳老师的《淘宝技术这十年》。这本书成为了我的架构启蒙书&#xff0c;书中的一句话像种子一样深埋在我的脑海里&#xff1a;“好的架构是进化来的&#xff0c;不是设计来的”。 2015 年&#xff0c;我加入神州专车订单研发团队&#xff0c;亲历了专…

将DOM结构转换成图片保存至本地或保存至剪切板

在新业务需求中&#xff0c;碰到这样一个场景&#xff0c;需要将后端返回的表格数据&#xff0c;保存至本地或者保存至剪切板&#xff0c;直接发送给用户使用。 1. 将内容转换成图片并保存至本地 1.1 交互效果 如图所示&#xff0c;想要点击复制按钮后&#xff0c;将下面这个…

office学习记录

目录 Excelwordvisioonedriveproject学习资料git仓库百度云分享 视频教程官网资料 Excel word visio onedrive project 学习资料 git仓库 office学习笔记: https://gitee.com/fedorayang/office.git 百度云分享 安装程序: office2019 project2019 visio2019 书籍: Ac…

Talk | 香港科技大学博士生陈竞晔:TextDiffuser系列让扩散模型渲染文本不再是难题

本期为TechBeat人工智能社区第560期线上Talk。 北京时间1月3日(周三)20:00&#xff0c;香港科技大学在读博士生—陈竞晔的Talk已准时在TechBeat人工智能社区开播&#xff01; 他与大家分享的主题是: “TextDiffuser系列让扩散模型渲染文本不再是难题”&#xff0c;介绍了他的团…

2020年认证杯SPSSPRO杯数学建模D题(第一阶段)让电脑桌面飞起来全过程文档及程序

2020年认证杯SPSSPRO杯数学建模 D题 让电脑桌面飞起来 原题再现&#xff1a; 对于一些必须每天使用电脑工作的白领来说&#xff0c;电脑桌面有着非常特殊的意义&#xff0c;通常一些频繁使用或者比较重要的图标会一直保留在桌面上&#xff0c;但是随着时间的推移&#xff0c;…

java的BitSet位集

2024.1.3 java的BitSet位集 目的: 计算2-2000000之间的素数 import java.util.BitSet;/**1. author HK*/ public class Sieve {public static void main(String[] args) {int n 2000000;long start System.currentTimeMillis();BitSet bitSet new BitSet(n 1);int count …

如何无需公网IP实现远程访问Windows本地WebDAV服务中存储文件

文章目录 1. 安装IIS必要WebDav组件2. 客户端测试3. cpolar内网穿透3.1 打开Web-UI管理界面3.2 创建隧道3.3 查看在线隧道列表3.4 浏览器访问测试 4. 安装Raidrive客户端4.1 连接WebDav服务器4.2 连接成功4.2 连接成功总结&#xff1a; 自己用Windows Server搭建了家用NAS主机&…

Vue+ElementUI笔记(1)

一、表格 1.上移、下移和移除功能 需求&#xff1a;有时我们会面对类似这样的表格 图中的上移&#xff0c;下移功能需求明显要求我们改变两行数据的顺序。在实际开发中这种功能一般由后台来做&#xff0c;因为列表数据一般从后台获取刷新。即是我们点击”上移“&#xff0c;向…

mac环境下安装部署mysql5.7

下载安装包 进入官网下载MySQL5.7的安装包 https://www.mysql.com/downloads/ 安装包下载完成后双击pkg文件进行安装&#xff0c;无脑点下一步即可&#xff0c;注意安装完成后记得保存最后弹出框的密码 进入系统偏好设置&#xff0c;找到mysql&#xff0c;开启mysql服务…

玩转贝启科技BQ3588C开源鸿蒙系统开发板 —— 编译构建及此过程中的踩坑填坑(2)

接前一篇文章&#xff1a;玩转贝启科技BQ3588C开源鸿蒙系统开发板 —— 编译构建及此过程中的踩坑填坑&#xff08;1&#xff09; 上一篇讲到在执行以下命令时再次出现了错误&#xff1a; $ sudo ./build.sh --product-name dayu210 --ccache错误如下&#xff1a; …… [OHOS…

maven:在maven中使用tomcat7插件

1、在pom.xml中添加tomcat7插件 <build><!-- Embedded Apache Tomcat required for testing war --><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</ver…

springboot漫画网站源码和论文

随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时代&#xf…

面试官:如何实现两栏布局,右侧自适应?三栏布局中间自适应呢?

面试官&#xff1a;如何实现两栏布局&#xff0c;右侧自适应&#xff1f;三栏布局中间自适应呢&#xff1f; 一、背景 在日常布局中&#xff0c;无论是两栏布局还是三栏布局&#xff0c;使用的频率都非常高 两栏布局 两栏布局实现效果就是将页面分割成左右宽度不等的两列&am…

ROS学习记录:在ROS中用C++实现激光雷达避障

前言 本文建立在成功获取激光雷达数据的基础上&#xff0c;详细参考 在ROS中用C实现获取激光雷达的数据 一、实现思路 二、在VScode中打开之前编写好的lidar_node.cpp 三、在lidar_node.cpp中写入如下代码 #include <ros/ros.h> #include <std_msgs/String.h> …

微信小程序:selectComponent返回null的问题

当小程序自带的组件无法满足所有需求的时候&#xff0c;我们可以参考很多自定义组件。我们这次排查问题就拿比较常用的vant-weapp作为示例&#xff1a;使用selectComponent获取自定义组件对象时&#xff0c;返回null的问题 1、json引入组件 "usingComponents": {&q…