正则表达式入门

1.什么叫做正则表达式?

正则表达式是用于描述字符排列和匹配模式的一种语法规则。
他主要用于字符串的模式分隔、匹配、查找及替换操作

2.正则表示式和shell中的通配符的区别有哪些?

  • 正则表达式用来匹配符合条件的字符串,而通配符是用来匹配条件的文件名
  • 正则是包含匹配,而通配符是完全匹配
  • grep、awk、sed等命令可以支持正则表达式,而find、cp这些命令支持shell自己的通配符来进行匹配

3.基础正则表达式

^          -->	表示以……开头的行
$          -->	表示以……结尾的行
.          -->	任意一个字符
*          -->  表示前一个字符出现0次、1次或多次
.*         -->	表示匹配所有字符
[abc]      -->	匹配a或b或c字符
[^a]       -->	表示排除a字符
[^a^]      -->	表示排除a或^字符

4.扩展正则表达式

+             -->  表示前一个字符出现一次或多次
()            -->  把括号里的内容变成整体,sed反向引用
{m,n}         -->  表示前一个字符出现m到n次
{m,}          -->  表示前一个字符出现至少m次
{m}           -->  表示前一个字符出现m次

5.注意\转义符

  • \.$表示的就是匹配以.结尾的行
  • \{n\}表示的是前面的字符恰好出现n次

注意:’{n}'在进行使用的时候要格外注意一个概念那就是,正则表达式是包含匹配
例如现给出下面一个文件:grep.txt

[root@foundation8 test]# cat grep.txt 
a
aa
aaa
aaaa
aaaaa

b
bb
bbb
bbbb
bbbbb

目标要求:提取出含有aaa的行

正则表达式理论上是这样写的:grep "a\{3\}" grep.txt

Linux是实践出真相的,我们操作出来的结果却是下面这个样子,和我们想象的不太一样阿~
这里写图片描述
难道是我们出错了?不是的。
只是因为我们犯了逻辑上的一个误区:aaaa和aaaaa中同样也存在a恰好出现3次的情况,所以匹配结果是没有错误的。
那么,如果你想要匹配出满意的结果,只能借助定界符号,即就是特殊标志,如果还是不懂,您往下继续看~

给出一个文件grep.txt

[root@foundation8 test]# cat grep.txt 
xaaa
xaaaa
aaax
aaaax
xaaax

同样的要求,我们会发现aaa的左右两边各有一个不同于a的字母x,这时x就作为了定界符号

[root@foundation8 test]# grep "xa\{3\}" grep.txt 
xaaa
xaaaa
xaaax
[root@foundation8 test]# grep "a\{3\}x" grep.txt 
aaax
aaaax
xaaax
[root@foundation8 test]# grep "xa\{3\}x" grep.txt 
xaaax

6.正则表达式练习

实例1::从字符串 str 中提取数字部分的内容(匹配一次)

var str = “abc123def”;
var patt1 = /[0-9]+/;
document.write(str.match(patt1));

未完待续…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值