perl正则表达式

Shell编程之case语句与函数

寵の児 提交于 2020-02-26 01:21:59
一、case语句 1.语法结构 2.应用案例 1)脚本传不同值做不同事 2)根据用户需求选择做事 二、函数 1.什么是函数? 2.如何定义函数? 3.函数如何调用? 1)当前命令行调用 2)定义到用户的环境变量中 3)脚本中调用 三、综合案例 1.任务背景 2.具体要求 3.综合分析 4.落地实现 四、正则表达式 1.正则表达式是什么? 2.正则能干什么? 3.正则当中名词解释 4.第一类正则表达式 1)正则中普通常用的元字符 2)正则中其他常用元字符 3)扩展类正则常用元字符 5.第二类正则 6.正则表达式总结 五、正则元字符一栏表 六、正则练习作业 1.文件准备 2.具体要求 七、课后作业 脚本搭建web服务 一、case语句 case语句为多重匹配语句 如果匹配成功,执行相匹配的命令 1. 语法结构 说明:pattern表示需要匹配的模式 case var in 定义变量;var代表是变量名 pattern 1) 模式1;用 | 分割多个模式,相当于or command1 需要执行的语句 ;; 两个分号代表命令结束 pattern 2) command2 ;; pattern 3) command3 ;; *) default,不满足以上模式,默认执行*)下面的语句 command4 ;; esac esac表示case语句结束 2. 应用案例 1)脚本传不同值做不同事

检查字符串是否为有效URL的最佳正则表达式是什么?

主宰稳场 提交于 2020-01-26 15:13:24
如何检查给定的字符串是否是有效的 URL 地址? 我对正则表达式的了解是基础知识,因此我无法从网上已经看到的数百种正则表达式中进行选择。 #1楼 function validateURL(textval) { var url regex = new RegExp( "^(http|https|ftp)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\'/\\\+&%\$#\=~])*$"); return urlregex.test(textval); } 符合 http://www.asdah.com/~joe | ftp://ftp.asdah.co.uk:2828/asdah%20asdah.gif | https://asdah.gov/asdh-ah.as #2楼 function validateURL(textval) { var urlregex = new RegExp( "^(http|https|ftp)\://([a-zA-Z0-9\.\-]+(\:[a-zA-Z0-9\.&%\$\-]+)*@)*((25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9

Linux 三剑客 -- awk sed grep

吃可爱长大的小学妹 提交于 2019-12-30 18:51:30
本文由本人收集整理自互联网供自己与网友参考,参考文章均已列出,如有侵权,请告知! 顶配awk,中配sed,标配grep awk 参考 sed 参考 grep 参考 在线查看linux命令速记表 appropos , history two long didn't read 整理 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件等等。如果我们相对这些文件进行一些编辑查询等操作时,我们可能会想到一些vi,vim,cat,more等命令。但是这些命令效率不高,这就好比一块空地准备搭建房子,请了10个师傅拿着铁锹挖地基,花了一个月的时间才挖完,而另外一块空地则请了个挖土机,三下五除二就搞定了,这就是效率。而在linux中的“挖土机”有三种型号:顶配awk,中配sed,标配grep。使用这些工具,我们能够在达到同样效果的前提下节省大量的重复性工作,提高效率。 接下来我们就看一下sed的详细说明 sed 是Stream Editor(字符流编辑器)的缩写,简称流编辑器。什么是流?大家可以想象以下流水线,sed就像一个车间一样,文件中的每行字符都是原料,运到sed车间,然后经过一系列的加工处理,最后从流水线下来就变成货物了。 [root@master ~]# dirname /etc/rc.d/init.d/functions /etc/rc.d/init.d [root

pcre和正则表达式的误点

蹲街弑〆低调 提交于 2019-12-29 07:30:11
本文只是关于正则一些容易出错的地方,关于正则的学习,可参考如下两篇文章: 基础正则: https://www.cnblogs.com/f-ck-need-u/p/9621130.html Perl正则: https://www.cnblogs.com/f-ck-need-u/p/9648439.html 1.正则中所有的匹配模式,都应该理解为"匹配了某字符或字符串后,紧跟着再匹配"。这个概念很重要。 2.中括号首部使用脱字符时,表示的是紧跟着匹配不含给定字符的字符,而不是允许不匹配给定的字符。 它们大多数时候是等价的,但在匹配行尾时,意义不同,例如:Aa[^bcd]$ 所匹配的行允许是Aaa$或Aax$,但不允许仅是Aa$。 这就是正则中"紧跟着匹配"的意思。 3.(\.[0-9]+)? 可匹配小数点部分,不能写成 (\.?[0-9]*) ,后者即使不能匹配小数点,也能匹配原本处于小数点后的数值 4.星号*匹配问题0或多个字符,如果写成"a*",将可以匹配任何单个字符,只不过对于非a字符,匹配到的结果为空。 例如字符串"111aaaAAA",正则"1a*"其实从读取第2个字符进行匹配的时候就已经匹配完成了,匹配的结果不是"1aaa",而是"1"加上1前面的一个空,因为是从行首这个锚定位开始匹配的。使用sed或perl进行替换操作就很容易理解。 $ echo '111aaaAAA'

正则表达式中常用符号

余生长醉 提交于 2019-12-29 07:28:49
一: 正则在Perl、Py森、Ruby、Java等语言中文本的正则表达式几乎是一样的 以前常用到的在网上都有现成的例子拿来用,比如电话格式、邮箱格式之类的。 但是自然语言处理中往往会根据自己的需求来制定一个表达式,如果正则的知识掌握的比较片面,在编写自然语言处理程序时可能会觉得苦恼。 在《自然语言处理简明教程》里面有很系统的正则表达式教程,特意总结出来消化吸收。 二: 双斜线“//”     最简单的正则表达式就是这样的,由类似于/hello world /的正则来搜索语料库中包含子字符串“hello world”的任何字符串相匹配。/e/是可以匹配到字符串h e llo的。 中括号“[]”     []会匹配其中的某一个字符。比如现在有嫌疑人,我们只知道他的名字可能是下面三种的某一种,分别是张伟、李伟或者黄伟。就可以使用/[张李黄]伟/来在人口数据库中匹配。 正则 匹配 模式例子 /[hH]/ello/ /[abc]/ /[1234567890]/ hello or Hello ‘a’或者’b’或者’c’ 数字 “ Hello !” “h a ppy~” “ 1 993年” {}表示限制长度。如:.{1}表示匹配一个任意字符 连字符“-”     用来划定范围,表示某一范围内的任何字符。比如上个例子里面的/[1234567890]/是不是感觉很不方便。如果表示为/[0-9]

学会Python正则表达式,就看这20个例子(整理自老表)

◇◆丶佛笑我妖孽 提交于 2019-12-26 07:53:06
1 查找第一个匹配串 import re s = 'i love python very much' pat = 'python' r = re.search(pat,s) print(r.span()) #(7,13) 2 查找所有1 s = '山东省潍坊市青州第1中学高三1班' pat = '1' r = re.finditer(pat,s) for i in r: print(i) # <re.Match object; span=(9, 10), match='1'> # <re.Match object; span=(14, 15), match='1'> 3 \d匹配数字[0-9] s = '一共20行代码运行时间13.59s' pat = r'\d+' # +表示匹配数字(\d表示数字的通用字符)1次或多次 r = re.findall(pat,s) print(r) # ['20', '13', '59'] 我们想保留13.59而不是分开,请看4 4 ?表示前一个字符匹配0或1次 s = '一共20行代码运行时间13.59s' pat = r'\d+\.?\d+' # ?表示匹配小数点(\.)0次或1次 r = re.findall(pat,s) print(r) # ['20', '13.59'] 5 ^匹配字符串的开头 s = 'This module

正则得介绍和使用——表单验证

女生的网名这么多〃 提交于 2019-11-29 13:58:33
1、正则的概念   (1)js这门语言一开始诞生得目的是什么?       就是为了做表单验证。在JS未出现以前,表单的信息验证需要传输给后台,让后台做数据验证处理之后,再返回给前端页面处理的结果。在带宽有限的情况下,整个验证过程非常复杂,且耗时。       在使用JS做验证的过程中,一个简单的验证规则的实现非常的麻烦。      如:从杂乱的字符串中找数字 var str = "asd68asd687as6da78sd123123zcacas" var linshi=''; var arr=[] for(var i = 0 ; i < str .length ; i ++){ if(str.charAt(i)>=0&&str.charAt(i)<=9){ linshi+=str.charAt(i) }else{ if(linshi!=''){ arr.push(linshi) } } } if(linshi!=''){ arr.push(linshi) } console.log(arr)       如果我们使用正则呢? var arr = str.match(/\d+/g);      是的使用正则和使用传统的js代码都可以实现这个功能,但是是不是太繁琐了。   (2)、什么是正则?      正则表达式(regular expression)是一个描述字符规则的对象

perl正则表达式

北城以北 提交于 2019-11-27 04:22:07
默认匹配$_ (.) 通配符:匹配任何单个的字符,但不包括换行符"\n"; (*) 匹配前一项0次或者多次; (+) 匹配前一项一个或者多个; (?) 匹配前一项0次或者一次; (())括号表示分组; (|)匹配左边或者右边; ([])匹配中括号内的任意一字符; (^)表示匹配此字符集的补集; (-)表示范围; (\d)表示[0-9]; (\w)表示[A-Za-z0-9_]; (\s)表示[\f\t\n\r]表示格式符,制表符,换行符,回车; (^\d,^\w,^\s)表示非数字,非word,非空白. ([\d\D])表示任何字符; (m匹配, m(fred),m<fred>,m{fred},m[fred],m,fred,,m!fred!,m^fred^) 成对的分隔符 如果使用//可以省略前面的m,m%http://% 匹配URL (/i) 不区分大小写; (/s)匹配任何字符; (/x)添加空格; (^)表示在字符串的开头进行匹配; ($)表示在字符串的结尾进行匹配; (\b\b)词界锚定. (\B)表示非词界锚定. (=~)绑定操作符; ($1,$2..)表示()匹配的标量变量 ($`,$&,$')分别表示匹配的前一部分,匹配部分,还没有匹配的剩余部分. ({5,15})表示5-15,{5,}表示5个以上 (*)={0,} (+)={1,} (?)={0,1} 优先级: 1