正则表达式练习

30 篇文章 0 订阅
26 篇文章 0 订阅

一、正则表达式练习工具:

可下载使用该工具:http://download.csdn.net/download/lyhdream/10132810

或者在线练习:

http://tool.oschina.net/regex/

https://tool.lu/regex/

https://regexr.com/

 

参考地址:http://blog.jobbole.com/63398/

正则表达式教程:http://deerchao.net/tutorials/regex/regex.htm

二、常用正则表达式字符

常用元字符

代码说明
.匹配除换行符以外的任意字符
\w匹配字母或数字或下划线
\s匹配任意的空白符
\d匹配数字
\b匹配单词的开始或结束
^匹配字符串的开始
$匹配字符串的结束

常用限定符

代码/语法说明
*重复零次或更多次
+重复一次或更多次
?重复零次或一次
{n}重复n次
{n,}重复n次或更多次
{n,m}重复n到m次

常用反义词

代码/语法说明
\W匹配任意不是字母,数字,下划线,汉字的字符
\S匹配任意不是空白符的字符
\D匹配任意非数字的字符
\B匹配不是单词开头或结束的位置
[^x]匹配除了x以外的任意字符
[^aeiou]匹配除了aeiou这几个字母以外的任意字符

三、正则表达式练习题

正则表达式中包含了一系列的字符,这些字符只能匹配它们本身。有一些被称为“元字符”的特殊字符,可以匹配一些特殊规则。

1、普通字符的练习

cat  匹配  cat

dog  匹配  dog

2、点“.”字符的使用【“.”字符匹配任意一个字符】

字符类:

c.t  可匹配 cat、cot ,cmt ,czt 等等

使用\ 反斜杠,忽略元字符,例如:

c\.t 只能匹配  c.t

c\\t 只能匹配 c\t

3、方括号的使用“[]

[abcd]  可匹配 a,b,c,d中的任意一个字符,例如

c[abc]t  可匹配  cat,cbt,cct

方括号中的字母顺序并不重要,例如:[abc] 等同于[bca]

 

使用反斜杠忽略元字符“\”: c\[t 只能匹配 c[t

字符范围:

[b-f]等同于[bcdef]

[A-Z]等同于[ABCDEFGHIJKLMNOPQRSTUVWXYZ]

练习:

【我们要匹配:hh-mm-ss  这种格式的时间,如下:】

[0-2][0-9]-[0-5][0-9]-[0-5][0-9]

【我们要匹配:YYYY-MM-DD 这样的年-月-日 格式,如下:】

[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]

字符的反义:

[^a] 匹配任何不是 a 的字符

[^a-zA-Z0-9] 匹配任何不适数组也不是字母的字符

[\^abc] 可以匹配:^,a,b,c中的任意一个字符

[^\^] 表示匹配任意不为 ^ 的字符

练习:

【找到一个at之前没有c的单词,即不适cat的单词】

[^c]at

4、转义字符:

\d 匹配任意一个数字,相当于[0-9]

\w     匹配一个数字或字符,相当于[0-9a-zA-Z]

\D     匹配一个非数字,相当于[^0-9]

\W    匹配一个非数字或字母,相当于[^0-9a-zA-Z]

练习:

【简化:[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]的写法:】

\d\d\d\d-\d\d-\d\d

5、重复字符“{}”,使用大括号:

a{3}  表示字符串aaa ,即a重复3次的意思

a\{2\} 表示字符串a{2}

[{}] 表示匹配一个左边的大括号或右边的大括号

练习:

【简化下面的表达式:

z.......z

\d\d\d\d-\d\d-\d\d

[aeiou][aeiou][aeiou][aeiou][aeiou][aeiou]
[bcdfghjklmnpqrstvwxyz][bcdfghjklmnpqrstvwxyz][bcdfghjklmnpqrstvwxyz][bcdfghjklmnpqrstvwxyz][bcdfghjklmnpqrstvwxyz][bcdfghjklmnpqrstvwxyz][bcdfghjklmnpqrstvwxyz][bcdfghjklmnpqrstvwxyz][bcdfghjklmnpqrstvwxyz][bcdfghjklmnpqrstvwxyz]

答案:

z.{7}z

\d{4}-\d{2}-\d{2}

[aeiou]{6}

[bcdfghjklmnpqrstvwxyz]{10}

指定重复范围:

a{4,4}  相当于 a{4}

colou{0,1} r   可表示colour或color

a{3,5} 可表示 : aaaaa,aaaa,aaa

a{1,} 表示匹配一个或以上的连续字符a ,相当于:  a+

.{0,} 表示匹配任意字符,相当于:   .*

练习:

【匹配双引号之间的任意字符,包含前后的双引号:】

".{0,}" 也可以使用 ".*"

6、关于重复的转义字符:

?表示重复0次货一次,相当于:  {0,1}

*表示重复0次货多次,相当于:   {0,}

+表示重复1次或多次,相当于:   {1,}

\?\*\+  表示匹配  ?*+

{?*+} 表示匹配一个?*或+

练习:

【简化下面的表达式:

".{0,}" and "[^"]{0,}"
x?x?x?
y*y*
z+z+z+z+

答案:

“.*"and"[^"]*

x{0,3}

y*

z{4,}

7、选择匹配“|”,竖线

cat|dog 表示匹配cat 或者dog

a|b|c  相当于 [abc]

cat|dog|\| 表示匹配 cat  dog  或者 |

[cat|dog] 表示匹配c  a  t  d  o  g  或者 |

 

练习:

【简化下面表达式:

s|t|u|v|w
aa|ab|ba|bb
[abc]|[^abc]
[^ab]|[^bc]
[ab][ab][ab]?[ab]?

答案:

[stuvw]

[ab]{2}

.

[^b]

[ab]{2,4}

使用真正表达式匹配0到31之间的数:

[0-9]|[12][0-9]|3[01]

 

8、分组“()”,使用括号

(Mon|Tues|Wednes|Thurs|Fri|Satur|Sun)day  表示一周的某一天

(white|yellow|grew|black)cat   表示4种颜色的猫的任意一种

\(\)  表示一对括号

[()]表示正括号或者反括号

9、单词分割符  \b

在单词和单词之间有单词分隔符,文本的开头和结尾通常有单词分割符

\b\w\w\w\b  表示一个3个字母的单词

10、换行

^  表示行的开始

$  表示行的结束

^$  表示一个空行

^.*$  表示整行

\^\$  表示匹配 ^或 $

[$]  表示匹配 $

[^] 不和法,应该写为 [\^] ,表示匹配一个^

11、贪婪与非贪婪匹配
  如:String str="abcaxc";
    Patter p="ab*c";
  贪婪匹配:正则表达式一般趋向于最大长度匹配,也就是所谓的贪婪匹配。如上面使用模式p匹配字符串str,结果就是匹配到:abcaxc(ab*c)。
  非贪婪匹配:就是匹配到结果就好,就少的匹配字符。如上面使用模式p匹配字符串str,结果就是匹配到:abc(ab*c)。

编程中如何区分两种模式
  默认是贪婪模式;在量词后面直接加上一个问号?就是非贪婪模式。
  下面的都是量词:
                    {m,n}:m到n个
     *:任意多个
     +:一个到多个
     ?:0或一个

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值