使用正则把数字前面的符号替换_全正则表达式学习记录

使用正则把数字前面的符号替换_全正则表达式学习记录

2023年7月10日发(作者:)

使⽤正则把数字前⾯的符号替换_全正则表达式学习记录正则表达式:就是⽤某种模式去匹配⼀类字符串的公式,它是由⼀串字符和元字符构成的字符串,所谓元字符,就是⽤以阐述字符表达式的内容、转换和描述各种操作信息的字符。基础正则表达式1. " . "(⼀个点)符号⽤于匹配除换⾏符以外的任意⼀个字符。⽰例:其中红⾊为匹配部分2. " * " 符号⽤于匹配前⼀个字符0次或任意多次。⽰例:由于/etc/passwd中没有rt、rrt这样的匹配,所以该表达式只找出了包含t的⾏(r匹配了0次)。3. “{n,m}” 符号虽然"*“可以重复匹配前⼀个字符,但不能精确控制次数,使⽤”{n,m}" 则能灵活控制字符重复次数,典型的有以下3种形式:{n} 匹配前⾯的字符n次⽰例:’ro{2}t’ 表⽰匹配以r开头后⾯接重复2次o再接t的字符 root 。{n,} 匹配前⾯的字符⾄少n次以上(含n次),⽰例:{n,m} 匹配前⾯的字符n到m次4. “^” 符号这个符号位于键盘数字6上⾯,⼜称尖⾓号。⽤于匹配开头的字符 。⽰例:“^root”表⽰匹配以root开头的⾏5."$"符号和上⾯的"^“号相对,”$"⽤于匹配尾部。⽰例:"abc$“表⽰以abc结尾的⾏,”^$“因为中间什么都没有,表⽰空⾏。下⾯”^r.*h$"表⽰以r开头,中间有⼀串任意字符,以h结尾的⾏。6."[]"符号这是⼀对⽅括号,⽤于匹配括号内出现的任⼀字符。⽐如说单项选择题答案可能是A,B,C,D⼀种,⽤正则表达式就是[ABCD]。如果遇到⽐较⼤的范围,⽐如说匹配任意⼀个⼤写字母,就要⽤"-“做范围限定,写成[A-Z],要匹配所有字母则写成[A-Za-z],注意,这⾥的”-“不是充当⼀个字符。数字则写成[0-9]。如果要匹配不是⼤写字母A,B,C,D,使⽤”^",这个符号出现在[]中代表取反,写成[^A-D]。7.""符号转义符号,上⾯提到"-“号在[]中有特别含义,举个例⼦,有个固定电话,也可写成021 88888888区号和电话号码中间⽤空格隔开,⼀个是”-",⼀个是空格,那我们不能这么写:[-],为了表⽰其作为⼀个字符的本意,就要使⽤转义符"“了,那这⾥应该写成[ -]其实在这⾥这个表达式中总共写了4个”",但你只能看到2个,就是因为“”本⾝在这⾥就有特殊意义,如果只写两个,你就看不到它了本⽂中如果有些地⽅符号显⽰不正常,可能就是没有进⾏转义,怪我粗⼼了。很多地⽅很多符号都需要进⾏转义,就需要使⽤""进⾏转义。8.""符号这两个符号分别⽤于界定单词的左边界和右边界。如果两个组合在⼀起,能够精确匹配,如""可以精确匹配单词hello.⽰例:以上8种是常见的元字符,还有些不太常⽤的字符,这些字符中有不少可以使⽤之前的8种基础元字符来表⽰。以下只作简单⽰例9."d"符号匹配⼀个数字,等价于[0-9],使⽤grep匹配这种正则表达式时可能会有⽆法匹配的问题。10."b"符号和"B符号"“b符号"匹配单词的边界,⽽”B"符号则刚好相反,匹配⾮单词边界。11."w"符号和"W"符号"w"符号 匹配字母、数字和下划线,等价于[A-Za-z0-9]“W"符号与”w"相反,匹配⾮字母、⾮数字、⾮下划线,等价于[^A-Za-z0-9]。12.""符号匹配⼀个换⾏符。13.""符号匹配⼀个回车符。14.""符号匹配⼀个制表符。15."f"符号匹配⼀个换页符。16."s"符号匹配任何空⽩字符。17."S"符号匹配任何⾮空⽩字符。扩展正则表达式扩展正则表达式是针对基础正则表达式的⼀些补充,⽐基础正则表达式多了⼏个重要的符号,使⽤扩展符号时,需要使⽤egrep命令。1. "?"符号"?"符号⽤于匹配前⼀个字符0次或1次,所以’ro?t’仅能匹配rot或rt。2. "+"符号"+"符号⽤于匹配前⼀个字符1次以上,所以’ro+t’可以匹配rot,root等。3. "|"符号"|"是"或"的意思,即多种可能的罗列,彼此间是⼀种分⽀关系。⽐如有的地⽅固定电话的区号是3位数,有的却是4位数:#区号是3位数^0[0-9]{2}-[0-9]{8}#区号是4位数^0[0-9]{3}-[0-9]{8}#两种区号^0[0-9]{2,3}-[0-9]{8}#也可以⽤"|"符号,但显然⽐上⾯这种更⿇烦^0[0-9]{2}-[0-9]{8}|^0[0-94. "()"符号"()“符号通常需要和”|"符号联合使⽤,⽤于枚举⼀系列可替换的字符。#使⽤"()"和"|"定义连接符的写法^0[0-9]{2,3}(-| )[0-9]{8}#这样和0511 88888888都能匹配#这种写法也可以⽤[]替换^0[0-9]{2,3}[ -][0-9]{8}#虽然"()"和"|"通配符通配符是⼀种特殊的语句,主要包含"*“号和”?“号(还有”{}","^","!")。主要⽤来模糊搜索⽂件,使⽤它代替⼀个或多个真正的字符,尤其是在不确定完整的⽂件名的情况下,⽤来匹配符合条件的⽂件。1. "*"符号代表0个或多个字符,⽰例:#显⽰当前⽬录所有以.doc为后缀名的⽂件ls -l *.doc

2. "?"符号,当它作为通配符使⽤时,代表任意⼀个字符:#列出所有以A开头的两个字符名并以.doc为后缀的⽂件ls -l A?.doc3. "{}"符号可匹配所有括号内包含的以逗号隔开的字符。#列出所有以字母A,B,C开头,以.doc结尾的⽂件ls -l {A,B,C}.doc#当然,使⽤"[]"也⾏ls -l [A-C].doc#但是如果要列出以字母AB,CD开头以.doc结尾的⽂件就只能⽤"{}""{}“还⽀持嵌套的通配,以”{x,y}"为例,如果x和y各⾃本⾝也是通配符,那效果就更强⼤了。#想⼀想下列⽰例的含义ls -l {[A-Z]*.doc,[0-9]??.txt}4. "^“符号和”!“符号这两个符号往往和”[]“⼀起使⽤,当出现在”[]"中的时候代表取反,所以[^A]和[!A]代表不是A。通配符和正则表达式之间存在⼀些差异,特别是有些相同的字符既⽤在正则表达式中⼜⽤在通配符中,极易造成混淆和⼲扰,只有通过多读多想才能加深理解和认识!简单的说,正则表达式主要⽤在⽂件内容的匹配上,⽽通配符主要⽤在⽂件名的匹配上,可以⽤这种⽅法来区别⼆者。

发布者:admin,转转请注明出处:http://www.yc00.com/news/1688985399a191694.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信