正则表达式Regular Expression特殊字符

正则表达式(regex)


瞄位: ^和$

^ :匹配一个输入或一行的开头,/^a/匹配”an A”,而不匹配”An a”

$ :匹配一个输入或一行的结尾,/a$/匹配”An a”,而不匹配”an A”

“^The”:表示所有以"The"开始的字符串(“There”,"The cat"等);

“Jerry$”:表示所有以"Jerry"结尾的字符串;

贪婪元字符:+ , * 与?

* :匹配前面元字符0次或多次,/ba*/将匹配b,ba,baa,baaa

+ :匹配前面元字符1次或多次,/ba*/将匹配ba,baa,baaa

? :匹配前面元字符0次或1次,/ba*/将匹配b,ba

多次匹配:

{n} :精确匹配n次;

{n,m} :匹配n-m次;

{n,} :匹配n次以上;

{,n} : 匹配0-n个;

*? 重复任意次,但尽可能少重复

+? 重复1次或更多次,但尽可能少重复

?? 重复0次或1次,但尽可能少重复

{n,m}? 重复n到m次,但尽可能少重复

{n,}? 重复n次以上,但尽可能少重复

或操作符:|

“x|y” :匹配x或y

“hi | hello”:表示一个字符串里有"hi"或者"hello";

“(b|cd)ef”:表示"bef"或"cdef";

“(a|b)*c”:表示一串"a"“b"混合的字符串后面跟一个"c”;

通用元字符:". "

如果想只匹配点,那么需要转义字符 “.” ,匹配其他元字符也一样,用转义字符就可以;

'.'可以替代除换行符之外的任何字符;

“a.[0-9]”:表示一个字符串有一个"a"后面跟着一个任意字符和一个数字;

“^.{3}$”:表示有任意三个字符的字符串(长度为3个字符);

方括号:[ ]

方括号表示某些字符允许在一个字符串中的某一特定位置出现:

“[ab]”:表示一个字符串有一个"a"或"b"(相当于"a|b");

“[a-d]”:表示一个字符串包含小写的’a’到’d’中的一个(相当于"a|b|c|d"或者"[abcd]");

“^[a-zA-Z]”:表示一个以字母开头的字符串;

“[0-9]%”:表示一个百分号前有一位的数字;

“,[a-zA-Z0-9]$”:表示一个字符串以一个逗号后面跟着一个字母或数字结束;

你也可以在方括号里用’‘表示不希望出现的字符,’'应在方括号里的第一位。(如:"%[^a-zA-Z]%"表示两个百分号中不应该出现字母)。

字符集

[xyz] :字符集(character set),匹配这个集合中的任一 一个字符(或元字符)

[^xyz] :不匹配这个集合中的任何一个字符

\b :匹配一个单词的边界

\B :匹配一个单词的非边界

\d :匹配一个字数字符,等同于[0-9]

\D :匹配一个非字数字符,等同于[^0-9]

\n :匹配一个换行符

\r :匹配一个回车符

\s :匹配一个空白字符,包括n,r,f,t,v等

\S :匹配一个非空白字符,等于/[^nfrtv]/

\t :匹配一个制表符

\v :匹配一个重直制表符

\w :匹配字母或数字或下划线或汉字,等于[a-zA-Z0-9_]

\W :匹配字母或数字或下划线或汉字以外的字符,等于[^a-zA-Z0-9_]

\x :匹配十六进制数字,等同于[0-9A-Fa-f]。

\X :匹配十六进制数字之外的任意字符,等同于[^0-9A-Fa-f]。

匹配单词

只匹配单独的单词Jerry:”< Jerry \ >“ ,这个只匹配单词两边为空白(空格、制表等)的单词,Jerry_Tom这类则匹配不到。

匹配单词开头: <

匹配单词结尾:>

搜索&替换

(搜索)命令: /正则表达式

(替换)命令: s/正则表达式/替换字符串/选项

选项可以是:i 表示不论大小写都匹配; g 表示匹配当前行中的所有匹配的字符串; d 表示删除

把所有单词help或Help都改为大写的HELP : %s/[Hh]elp/HELP/g

%表示匹配当前文档中所有行,你也可以指定部分行 1,20 s/[Hh]elp/HELP/g

使用单个空格替换一个或多个空格:%s/ \+/ /g

删除所有空行(没有任何字符,除了一个回车符)

:g/^$/d
:g/^[ tab]*[ tab]*$/d

删除含有某些字符的行:g/ERROR/d

删除每行的所有的前导空格:%s/^ *//g

在文件中的每一行的开始插入->(或者其它字符):%s/^/->/

在每一行的尾部加上一个句号(或其他字符):%s/$/。/g

删除以数字开头的行 : %s/^\d.*$//g

删除以[a,b,c]开头的行 : %s/^[a|b|c].*$//g

删除重复行 : %s/^\(.*\)\n\1$/\1/g

使用\(和\)符号括起正则表达式,即可在后面使用\1、\2等变量来访问\(和\)中的内容。

例如:交换列表中所有连字符分隔的条目的顺序ABC : XYZ:%s/\(.*\):\(.*\)/\2 : \1/g

sed用法

用来直接处理文件

简单实例
1、删除所有空行:sed ‘s/^$/d’ *.txt

2、删除所有只包含空格或者制表符的行 : sed ’ s/^[ ]*$/d’ price.txt
3、删除所有引号 : sed ‘s/"//g’ price.txt


参考网址:http://www.jb51.net/article/73342.htm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值