其他杂项

others
其他系统相关杂项问题

正则表达式自学教程

10个月前 (07-01)其他杂项3344

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

 一、正则常用到符号含义

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


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

分享给朋友:

相关文章

网站http/https/www/无www开头域名访问301重定向设置方法

网站http/https/www/无www开头域名访问301重定向设置方法

众所周知,根据搜索引擎的喜好,相同内容的页面最好是只有一个URL网址,一些新手站长可能不注意,自己做的网站同个网页会出现2个或者4个URL可以访问。这些网址形式如: htttp://www.nqnh.com  http://nqn...

html5实现字幕滚动代码

html5实现字幕滚动代码

网站需要做个字幕滚动效果,以前的marquee写法已过时,网上找了个纯html写法,JS也不需要,比较满意。<!doctype html> <html> <head> <meta&n...

华为云主机重装系统、宝塔环境一点总结

华为云主机重装系统、宝塔环境一点总结

因为朋友的华为云主机出了问题,我需要给重新安装系统和做好一个企业网站。本人也是摸索学习,这里总结下经验,附宝塔官方安装教程步骤一:华为云重装系统打开网址 https://www.huaweicloud.com 登录进入弹...

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

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

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

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

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

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

win10系统如何删除任务栏图标残留

win10系统如何删除任务栏图标残留

本人win10电脑上装过一些软件后已删除,但是发现在“选择哪些图标显示在任务栏上”里面仍然存在这些软件名字,让完美倾向者看着非常难受。网上搜索发现不少人也遇到这问题,并提出了解决方法。我参照一个方案进行操作,发现没起作用。后来经过反复对比,...

发表评论

访客

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

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

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