其他杂项

others
其他系统相关杂项问题

正则表达式自学教程

4周前 (07-01)其他杂项1770

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

 一、正则常用到符号含义

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


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

分享给朋友:

相关文章

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

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

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

互联网项目引流的指导思想和误区

互联网项目引流的指导思想和误区

本文源自义乌之狼微信群内一个群友分享的三张引流图片,觉得挺有价值,特在此分享。一、引流指导思想1.1引流(革命)思想,指导路线革命指导思想--农村包围城市,武装夺取政权;引流指导思想-广告化(形式)策略,流水化(批量)生产。1.2思想策略,...

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

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

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

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

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

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

发表评论

访客

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

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

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