基础正则表达式介绍与练习

基础正则表达式介绍与练习

一、什么是正则表达式

在做文字处理或编写程序时,用到查找、替换等功能,使用正则表达式能够简单快捷的完成目标。简单而言,正则表达式通过一些特殊符号的帮助,使用户可以轻松快捷的完成查找、删除、替换等处理程序。例如 grep, expr, sed , awk. 或 Vi 中经常会使用到正则表达式,为了充分发挥 shell 编程的威力,需要精通正则表达式。正规表示法基本上是一种『表示法』, 只要工具程序支持这种表示法,那么该工具程序就可以用来作为正规表示法的字符串处理之用。 也就是说,例如 vi, grep, awk ,sed 等等工具,因为她们有支持正规表示法, 所以,这些工具就可以使用正规表示法的特殊字符来进行字符串的处理。

二、正则表达式特殊符号

首先是正则表达式的特殊符号:

[:alnum:]代表英文大小写字母及数字 
[:alpha:]代表英文大小写字母
[:blank:]代表空格和 tab 键
[:cntrl:]键盘上的控制按键,如 CR,LF,TAB,DEL [:digit:]代表数字 [:graph:]代表空白字符以外的其他 [:lower:]小写字母 [:print:]可以被打印出来的任何字符 [:punct:]代表标点符号 [:upper:]代表大写字符 [:space:]任何会产生空白的字符如空格,tab,CR 等 [:xdigit:]代表 16 进位的数字类型 

特殊符号实例

任意建立一个文本并编辑。或者以原有的文本做实验皆可。

$  touch regular_express.txt
$  vi regular_express.txt //或者  sudo gedit regular_express.txt

操作截图:

图片描述信息

文本内容为:

"Open Source" is a good mechanism to develop programs.
apple is my favorite food.
Football game is not use feet only.
this dress doesn't fit me.
However, this dress is about $ 3183 dollars.
GNU is free air not free beer.
Her hair is very beauty.
I can't finish the test.
Oh! The soup taste good.
motorcycle is cheap than car.
This window is clear.
the symbol '*' is represented as start.
Oh!My god!
The gd software is a library for drafting programs.
You are the best is mean you are the no. 1.
The world <Happy> is the same with "glad".
I like dog.
google is the best tools for search keyword.
goooooogle yes!
go! go! Let's go.
# I am VBird

查找小写字母:

$ grep -n '[[:lower:]]' regular_express.txt

操作截图:

蓝色为匹配成功的字符

图片描述信息

查找数字:

# grep -n '[[:digit:]]' regular_express.txt

操作截图:

图片描述信息

三、语系对正则表达式的影响

由于不同语系的编码数据不同,所以造成不同语系的数据选取结果有所差异。以英文大小写为例,zh_CN.big5 及 C 这两种语系差异如下:

  • LANG=C 时: 0 1 2 3 4....ABCDE...Zabcde...z
  • LANG=zh_CN 时:0 1 2 3 4...aAbBcCdD.....zZ

在使用正则表达式[A-Z]时, LANG=C 的情况下,找到的仅仅是大写字符 ABCD..Z。而在 LANG=zh_CN 情况下,会选取到 AbBcCdD.....zZ 字符。因此在使用正则表达式时要特别留意语系。

由于我们一般使用的兼容与 POSIX 的标准,因此使用 C 语系。

四、简单例子 :ls 命令正则表达式应用

ls 命令是 linux 下最常用的命令。ls 命令是 list 的缩写,缺省下 ls 用来打印出当前目录的清单。

命令中‘ * ’号是正则表达式的一种,代表任意字符串。

$ ls
$ ls a*   //打印出以 a 开头的文件及内容或者目录
$ ls *s   //打印以 s 结尾的文件及内容或者目录
$ ls Pub* // Public 文件为空,所有没有打印任何内容
$ ls e*   //没有以 e 开头的文件,所有显示没有找到匹配项

操作截图:

图片描述信息

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

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

相关文章

android canvas 网络图,【巨坑:toDataURL】canvas合成网络图片

不知有没有小伙伴用过canvas合成图片&#xff0c;然后爆炸报错截图尼玛&#xff0c;然后各种搜索&#xff0c;不外乎以下几种坑爹处理方案&#xff1a;后端处理&#xff0c;比如Access-Control-Allow-Origin "*"(要是请求到其他网站的图片就不适用了&#xff0c;比如…

水晶报表如何查看sql_有了这个报表工具,一键生成自定义的各种报表,还可以导出Excel...

EasyReport是一个简单易用的Web报表工具,它的主要功能是把SQL语句查询出的数据转换成报表页面&#xff0c; 同时支持表格的跨行(RowSpan)与跨列(ColSpan)配置。 同时它还支持报表Excel导出、图表显示及固定表头与左边列的功能。功能介绍本工具从数据库(MySQL,Oracle,SQLServer,…

python 三维向量 交互_Blender实现Nature of Code1.5单位向量[Nature of Node 004]

【Nature of Node #004】Blender创意编程进阶应用&#xff1a;实现Nature of CodeNature of Code 1.5, Unit Vector (Normalize)背景介绍这个系列“Nature of Node”&#xff0c;是专门用Blender的Node&#xff08;节点&#xff09;方式来实现Nature of Code。用到一个Blender插…

Sitemesh3的使用及配置

1 . Sitemesh 3 简介 Sitemesh 是一个网页布局和修饰的框架&#xff0c;基于 Servlet 中的 Filter&#xff0c;类似于 ASP.NET 中的‘母版页’技术。参考&#xff1a;百度百科&#xff0c;相关类似技术&#xff1a;Apache Tiles。 官网&#xff1a;http://wiki.sitemesh.org/wi…

等保项目流程

等级保护&#xff1a;直属管理公安局 产品必须通过公安局安全许可证分级保护&#xff1a;直属管理保密局 产品必须通过保密局销售许可证等级保护&#xff1a;一般分为5级&#xff0c;目前最高用到是等保4级总概&#xff1a;定级——前期调研——总…

鸿蒙系统r如何升级,高歌猛进,鸿蒙系统升级机型再次确认,花粉:终等到!...

虽然华为手机现在的压力非常大&#xff0c;但是在前进的道路上&#xff0c;真的充满了乐观精神&#xff0c;而且现在也算是一路高歌猛进了&#xff0c;发展路线开始加快了许多&#xff0c;无论是新机还是系统&#xff0c;都有着非常多的新消息。因为华为手机的实力很强&#xf…

Oracle快速备份表数据

Oracle数据库中备份表数据。 例子&#xff1a; 1 create table table_name_bak as select * from table_name 1 create table table_name_bak as select * from table_name 2 where table_name.date between TO_DATE(2018-09-25,yyyy-MM-dd) and TO_DATE(2018-09-26,yyyy-MM-d…

git pull

今天在服务器上git pull是出现以下错误&#xff1a; error: Your local changes to the following files would be overwritten by merge: application/config/config.php application/controllers/home.php Please, commit your changes or stash them before you can merge. …

jq控制div是否展示_jQuery控制多个DIV的显示和隐藏

问题补充&#xff1a;这是我写的JSfunction Previous(){for(var i1;i<3;i){if(document.getElementById("d"i).style.display"block"){document.getElementById("d"(i-1)).style.display"block";}document.getElementById("d&…

C# 线程间不能调用剪切板的问题

最近做一个项目&#xff0c;需要用到线程&#xff0c;而且要用到剪切板&#xff0c;创建了一个子线程之后发现在子线程中剪切板上获取不到数据&#xff0c;当时特别纳闷&#xff0c;上网查资料&#xff0c;最后终于搞定&#xff0c;现将解决方法归纳如下&#xff1a; 第一步&am…

android studio背景模糊_[Android翻译]CameraX:过去、现在和未来的一瞥

CameraX是一个未捆绑的Android Jetpack库&#xff0c;它可以帮助你在Android应用中轻松添加摄像头功能。传统上&#xff0c;由于Android设备种类繁多&#xff0c;编程模型复杂&#xff0c;在Android上构建具有相机功能的应用程序非常困难。现在成千上万的开发者都在使用CameraX…

html页面根据分辨率缩放,html2Canvas根据不同分辨率,生成pdf内容自适应

根据屏幕大小不同&#xff0c;页面内容自适应并一页展示&#xff0c;应该如何实现// 导出页面为PDF格式import html2Canvas from html2canvasimport JsPDF from jspdfexport default{install (Vue, options) {Vue.prototype.getPdf function () {setTimeout(() > {var titl…

【agc002f】Leftmost Ball(动态规划)

【agc002f】Leftmost Ball&#xff08;动态规划&#xff09; 题面 atcoder洛谷 题解 我们从前往后依次把每个颜色按顺序来放&#xff0c;那么如果当前放的是某种颜色的第一个球&#xff0c;那么放的就会变成\(0\)号颜色&#xff0c;所以无论何时&#xff0c;\(0\)号颜色的数量不…

VS2010中的快捷键

一. VS2010中的快捷键 1&#xff1a; Ctrl Enter &#xff08;在光标指定位置的上 K C &#xff08;注释&#xff09; Ctrl E U &#xff08;取消注释&#xff09;  <>  Ctrl K U &#xff08;取消注释&#xff09; 5&#xff1a; Tab &#xff08;增加缩进&a…

export function函数传参_04 js高阶函数(惰性函数、柯里化函数、compose函数)和单例设计模式...

高阶函数的定义在《javascript设计模式和开发实践》中是这样定义的。函数可以作为参数被传递&#xff1b;函数可以作为返回值输出。结合这两个特点&#xff0c;首先想到的肯定是回调函数&#xff0c;回调函数也是高阶函数的一种&#xff0c;除了回调函数&#xff0c;还有很多的…

Javascript构造函数的继承

仅供学习参考&#xff0c;原文链接&#xff1a;http://www.ruanyifeng.com/blog/2010/05/object-oriented_javascript_inheritance.html 今天要介绍的是&#xff0c;对象之间的"继承"的五种方法。 比如&#xff0c;现在有一个"动物"对象的构造函数。 funct…

python输入字符串str_python字符串(str)

#value "raitOrEi"#v value.capitalize()#首字母大写#print(v)#v1 v.casefold()#全部变小写&#xff0c;不只是英文的&#xff0c;其他语言特殊的大小写也变换#print(v1)#v2 v.lower()#只是英文变小写#print(v2)#设置宽度&#xff0c;并将内容居中#20 代指总长度…

html5 audio api 录音,如何使用HTML5 Web Audio API录制我的声音

在webkit浏览器上,您可以将get user media api与webkitGetUserMedia一起使用 – 如html5rocks所示.如果你想用你的声音来创建javascript事件(例如控制屏幕上的对象)你必须分析传入的声音(例如事件1的高频率 – 事件2的低频率,语音分析要复杂得多,见下文)另外,还有chrome的’x-w…

修改密码

在updateservlet.java中写了方法&#xff0c;修改用户密码&#xff0c;代码不成功求大神指教&#xff0c;代码如下&#xff1a; updateadminpw.jsp <% page contentType"text/html;charsetgb2312" pageEncoding"gb2312" %><% taglib uri"ht…

MlLib--逻辑回归笔记

批量梯度下降的逻辑回归可以参考这篇文章&#xff1a;http://blog.csdn.net/pakko/article/details/37878837 看了一些Scala语法后&#xff0c;打算看看MlLib的机器学习算法的并行化&#xff0c;那就是逻辑回归&#xff0c;找到package org.apache.spark.mllib.classification下…