正则表达式
正则表达式(Regular Expression) 正则表达式是一种字符特征的描述方式,用来在文本中匹配到用户想要的东西.
正则表达式与通配符:
1.正则表达式一般用于处理文本内容,常用命令有grep,sed,awk,vim等
通配符一般用于匹配文件名,常用命令有find,ls,cp等
2.各符号的含义不尽相同.
什么地方使用正则表达式
vim grep sed awk nginx apache mail垃圾邮件过滤。。。 perl java python 等等都使用正则
构成
1.元字符(基本元字符、扩展元字符)
2.除元字符之外的任意字符都是表示他字面意思的正则表达式
正则表达式的匹配过程
正则表达式是按照从表达式最左端第一个字符开始,左到右依次一个一个字符进行匹配.当字符串中有字符成功匹配到正则表达式中字符,则从这个位置开始尝试正则表达式中的下一个字符进行匹配,如果匹配成功则继续从这个位置开始匹配正则表达式中下一个字符;如果匹配不成功,则“回溯”到第一次匹配的字符处重新从正则表达式中第一个字符开始匹配。
特征
贪婪匹配
基本元字符
1.字符匹配
** . 任意单个字符**
** [] []内的任意单个字符**
** [ a-z] 任意单个小写字母**
** [a-zA-z] [0-9] [a-zA-z0-9]**
[^0-9]除了数字外的任意当个字符
[a-z]小写字母
[0-9]数字
[A-Z]大写字母
[a-zA-Z]所有字母
[^a-zA-Z0-9]所有符号
次数匹配
** * 匹配前面的字符重复****0次****到多次 *
{****n****}****匹配前面的字符重复任意次数
{n,m}前面的字符重复n次到m次
{,n} 前面的字符最多重复n次
{n,} 前面的字符最少重复n次
** 位置匹配**
^ 行首
$ 行尾
< 词首
> 词尾
扩展元字符****Extended Metacharacters (egrep and awk)
sed -r
?? 前面的字符重复0次或1次
{} 次数匹配意义同基本元素中的{}
|或着
() 分组
\数字 引用分组的内容
前向: 在正则中引用
后向: 在其他地方引用, \0表示引用模式中所有的内容 \0 ⇔ &
hehello
llllo
llheo
hellhello
hellohello
编写正则表达式的3 个步骤****:
1 知道要匹配的内容以及它如何出现在文本中。
2 编写一个模式来描述要匹配的内容
3 测试模式来查看它匹配的内容,不能错,不能漏,不能多
练习: head /etc/passwd > /tmp/pass
1. 删除每行的第一个字符
2. 在每行行首插入hello
3. 删除每行的第二个字符
4. 把每个数字用()括起来 如:(1)(2)
5. 把每个数值用()括起来 如:(12)
6. 删除每行的倒数第二个字符
7. 交换每行的第一个和最后一个字符
8. 删除刚好三个字符的单词
9. 把ro或da替换成A
思考:
1. 删除每行的第一个单词(纯字母)
2. 交换第一个和倒数第二个单词(纯字母)
POSIX字符类
点击这里点击这里
[:digit:]任何数字
[:xdigit:]任何十六进制数字
[:alpha:]任何字母
[:lower:]任何小写字母
[:upper:]任何大写字母
[:alnum:]任何字母或数字
[:cntrl:]ASCII控制字符(ASCII 0~31 和 ASCII 127)
[:punct:]不属于[:alnum:]和[:cntrl:]的任何字符
[:blank:]空格或制表符([ ])
[:space:]任何空白字符,包括空格([\f
\v ])
[:print:]任何可打印字符
[:graph:]同[:print:],但不包括空格
正则表达式语法是什么?
答:正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。例如:runoo+b,可以匹配runoob、runooob、runoooooob等,+号代表前面的字符必须至少出现一次(1次或多次)。runoo*b,可以匹配...
求一个正则表达式
答:下面是一个正则表达式,可以用来匹配满足上述要求的字符串:^(?:(?<key1>\w+)\s*=\s*'(?<value1>[^']*)'\s+(?:(?:AND|OR)\s+(?<key2>\w+)\s*=\s*'(?<value2>[^']*)')*)?该正则表达式分为四个部分:1、以^开头和以$结尾,表示匹配的字符串必须是完整的字符串,不能...
正则表达式概述 什么是正则表达式
答:正则表达式概述 正则表达式在程序设计语言中存在着广泛的应用,特别是用来处理字符串。如匹配字符串、查找字符串、替换字符串等。可以说,正则表达式是一段文本或一个公式,它是用来描述用某种模式去匹配一类字符串的公式,并且该公式具有一定的模式。本小节将介绍正则表达式的基本概念、第一个正则表达式,以及...
正则表达式匹配?
答:正则表达式是一种用于描述字符串模式的工具,通过使用特定的语法规则,可以方便地进行字符串匹配、查找、替换等操作。在正则表达式中,常用的匹配模式包括:1.普通字符:可以直接匹配对应的字符,例如字符"a"可以匹配字符串中的"a"。2.字符类:用方括号([])表示,可以匹配方括号中包含的任意一个字符。
正则表达式
答:正则表达式(Regular Expression) 正则表达式是一种字符特征的描述方式,用来在文本中匹配到用户想要的东西.正则表达式与通配符:1.正则表达式一般用于处理文本内容,常用命令有grep,sed,awk,vim等 通配符一般用于匹配文件名,常用命令有find,ls,cp等 2.各符号的含义不尽相同.什么地方使用正则表达式 vim grep ...
正则表达式语法
答:正则表达式语法 一个正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。这里有一些可能会遇到的正则表达式示例:JScript VBScript 匹配 /^\...
求各种各样的正则表达式的写法,如:密码(0-9,a-z(分大小写)),用户名...
答:利用正则表达式限制网页表单里的文本框输入内容:用正则表达式限制只能输入中文:onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,’’)" onbeforepaste="clipboardData.setData(’text’,clipboardData.getData(’text’).replace(/[^\u4E00-\u9FA5]/g,’’))"用正则表达式限制只能输入全角字符: ...
正则表达式语法是什么?
答:正则表达式语法是(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。例如:runoo+b,可以匹配 runoob、runooob、runoooooob 等,+ 号代表前面的字符必须至少出现一次(1次或多次)。runoo*b,...
正则表达式怎么匹配正则表达式?
答:先化成带空转移的dfa,在去空符号。构造正规式1(0|1)*101相应的DFA。(A|B)*表示A或者B出现若干次或者不出现。(A*B*)* A出现若干次或者不出现,B出现若干次或者不出现,一起出现若干次或者不出现 (A*|B*)* A出现若干次或者不出现或者B出现若干次或者不出现,一起出现若干次或者不出现。任何...
什么是正则表达式
答:正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。