其他杂项

others
其他系统相关杂项问题

正则表达式自学教程

1年前 (2024-07-01)其他杂项3432

因为本人有时需要批量替换改写文章,简单的关键词替换不能满足需求,不得不学习正则表达式,作为一个新手,这里记录一些正则规则和遇到的问题。

 一、正则常用到符号含义

1.1.第一批正则学习

[]匹配列表之中的任何单个字符.例如,"[ab]"匹配"a"或者“b","[0-9]"匹配任意数字

[^]匹配列表之外的任何单个字符.例如,"[^ab]"匹配“a"和“b"以外的字符,"[^0-9]"匹配任意非数字字符

[abxy0-6]匹配abxy中任意一个字母或0-6任意一个数字

[^abxy0-6] 匹配除了abxy和0-6的任意一个字符

^其右边的表达式被匹配在一行的开始.例如“^A”仅仅匹配以“A”开头的行

()影响表达式匹配的顺序,并且用作表达式的分组标记

\转义字符.如果你要使用""本身,则应该使用""

.匹配任意一个字符

\t 匹配tab

\n new line,一般是用enter回车

\r return 换行在linux,光标回到前面

\w  word,匹配任意一个字母(加上”")

\W  匹配任意一个非字母

\s   space,匹配表示一个空白字符(空格,tab,换页符等)

\S   匹配非空格

\d digital,匹配任意一个数字

\D   匹配任意一个非数字

(n,m) 匹配n到m次

正则表达式自学教程

 1.2 第二批正则学习

^:表示匹配字符串的开头。

$: 表示匹配字符串的结尾,

.:表示匹配任意一个字符。

*:表示匹配前面的字符出现0次或多次。

+:表示匹配前面的字符出现1次或多次

?:表示匹配前面的字符出现0次或1次。

[]:表示匹配方括号内任意一个字符。

[^]:表示不匹配方括号内的任何一个字符。

():表示分组,可以将一组字符看作一个整体进行匹配。

|:表示或者,匹配符号左边或者右边的任意一个表达式。

 

() 分组捕获(子表达式)的开始和结束。可以捕获子表达式以供以后使用。

[]中括号表达式的开始。

中括号表达式是在方括号内包含一个或多个字符构成的列表的表达式。普通字符在中括号内表示本身,大多数特殊字符在中括号表达式内出现时失去它们的意义。除了转义字符'\', (要包含'\', 需要使用'\') 如: 正则表达式 No [1234] 匹配 No 1, No 2, No 3 和 No4. 如果想在中括号中使用一个范围作为列表来匹配字符,可以用连字符 '-' 将范围中的开始字符和结束字符分开。单个字符的字符值确定范围内的相对顺序。如: 正则表达式 No [1-4] = No [1234],中括号表达式还可进行组合, 如 [A-Za-z0-9] 匹配A-Z, a-z, 0-9 的字符 

注意 1. 开始值的Unicode值必须在结束值Unicode值的前面。

注意 2. [\-]匹配连字符'-', 放在中括号列表的开始或结尾也可起到同样的效果, 如 [-c-f] 匹配 c 至 f 的字符和连字符

{ } 标记限定符表达式的开始。

(数量)限定字符

 

二、正则实例学习

例子1:去掉空行,在“查找”栏中输入正则表达式:^\s*\n 还有另外一种 ^[\t]*\n 查找的是tab似乎不正确,应该查找space,注意space和tab的区别,两种空格写法共存着。空行是怎么产生的?回车产生,一般用\n 换行符查找,^\s表示查找行首空格,^\s*\n表示有或者无空格回车

例子2:删除行尾空格,[\s]+$ 这个中括号应该没意义,改为\s+$,如果两种都要匹配,不如用这个[\s\t]+$ ,据说还可以用这\s*$(似乎用*不对,确定不对用+)

查 \s 的时候是包括TAB空格的,但查 \t 的时候却不能包括半角空格,其实这两个都非常有用。

例子3:查询行首键字开头的,改为一键,正则:^键替换为一键,开始想复杂了。

关于换行资料:文件中的回车换行符号:

linux,unix: \n

windows : \r\n  (CR+LF表示回车加换行)

Mac OS : \r

新学习点:

() 括号分组,用于后向引用

\1 \2 后向引用先前括号分组的表达式

\0将引用上次的匹配结果

例子3学习点

*匹配0或多个正好在它之前的那个字符。例如正则表达式。*意味着能够匹配任意数量的任何字符。?匹配0或1个正好在它之前的那个字符。注意:这个元字符不是所有的软件都支持的。.*是指任何字符0个或多个,.?是指任何字符0个或1个。

?表示非贪婪模式,即为匹配最近字符 如果不加?就是贪婪模式a.*bc 可以匹配 abcbcbc 。

.* 具有贪婪的性质,首先匹配到不能匹配为止,根据后面的正则表达式,会进行回溯。.*?则相反,一个匹配以后,就往下进行,所以不会进行回溯,具有最小匹配的性质。

 .*? 表示匹配任意字符到下一个符合条件的字符

例子:正则表达式a.*?bbb 可以匹配 acbbb abbbbb accccccccbbb


版权声明:本文由贝联科技发布,如需转载请注明出处,如需分享可点击上方生成海报按钮。

分享给朋友:

相关文章

PbootCMS后台去版权显示教程

PbootCMS后台去版权显示教程

PbootCMS是一个很不错的PHP建站系统,但后台一些明显的PbootCMS字样看着不舒服,本人在此分享下自己和其他网友总结出来的经验。特别说明,本人只是修改一些明显的碍眼字样,请大家一起尊重PbootCMS 知识产权。(一)后台登录界面...

关于国内运营网站需要ICP许可证、EDI许可证等证件的说明

关于国内运营网站需要ICP许可证、EDI许可证等证件的说明

许多做网站的同学对在国内合法开办网站需要哪些证件可能不是很清楚,下面做一个总结:ICP许可证:主要用作于信息发布及经营性收付费功能的网站;EDI许可证:用作于电商类网站,具有第三方商家入驻的功能;呼叫中心业务许可证:用作于坐席外包,电话外呼...

WIN10系统Edge浏览器如何启用IE模式访问网银网站

WIN10系统Edge浏览器如何启用IE模式访问网银网站

因为本人需要和长安银行每季度进行网银对账,每每碰到Win10系统不好登录长安银行网银网站问题,在此分享解决办法。不得不说这些银行真的落伍,什么年代了还让客户必须用IE浏览器访问你的网站才可以登录。微软公司启用了谷歌内核的Edge浏览器,不再...

转载的CSS两列布局,三列布局方法

转载的CSS两列布局,三列布局方法

下面方法主要用的display:inline-block属性,设置同行DIV宽度,另一个DIV用margin限制宽度。按照文档流默认显示方法CSS两列布局,右侧固定,左侧自适应宽度 <div style="widt...

Zblog搜索无结果时增加一个友好提示

Zblog搜索无结果时增加一个友好提示

Zblog是个不错的博客程序,但官方不知道怎么回事不去用心完善一些基本功能,我使用时就频频发现一些缺陷bug,都有些怀疑官方故意如此是为了卖付费插件增加收入。上次发了通过修改js文件,避免前台空搜索bug的解决办法。还有一个不大不小的问题,...

如何屏蔽PetalBot蜘蛛等垃圾蜘蛛办法分享

如何屏蔽PetalBot蜘蛛等垃圾蜘蛛办法分享

本人有一个 小网站,后台可以查看蜘蛛数据,经常发现有许多国外蜘蛛爬取。作为一个面向国内特定地域用户的网站,着实用不着那些蜘蛛来消耗资源,网上找到一段Nginx配置代码,加上后很灵敏,那些国外蜘蛛第二天就不来了。 if (...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
现在,非常期待与您的又一次邂逅

我们努力让每一次邂逅总能超越期待

智能客服
欢迎咨询智能客服,我可以回答些简单问题