学习正则表达式

在看Django Web development with Python 这本书,开头有一段是讲正则表达式的,感觉写的很不错,于是就翻译了这一部分。

1.正则表达式

正则表达式本身就像是一门小型的语言。尽管它复杂且难以入门,它却能够以很高的灵活性处理字符串。正则表达式包含了一串字符来定义一种模式。

在这本书中,我们不会涉及到正则表达式的全部内容,因为这需要大量的篇幅和章节来学习,并且会使这本书的重心偏移。在你尝试去写自己的第一个url之前,先去练习一下正则表达式。许多的网站能够帮助你进行正则的训练与学习。尝试去搜索Onlineregex matcher,在那里可以通过JavaScript来判断你的正则表达式。如果你想要更进一步地学习正则表达式,可以去阅读Mastering Regular Expressions Python,Packt Publishing,作者是Felix Lopez。当然也有一款非常实用的工具Regexper来可视化你的正则表达式,我们在后面也会用到这个工具来将正则表达式展示为一张图表。

接下来的部分我们会探索正则表达式使用的模式,功能以及一个使用它们的小例子。

 

2.连续字符

连续的字符,比如说字母或是数字,在正则表达式中代表着它们以字符串的形式出现并且是严格有序的。

举个例子,一个简单的正则表达式 test01 会匹配 test01,dktest01,以及test0145g这些字符串,但是它不能匹配test10或是tste01。

 

而正则表达式test-reg会匹配test-regex但是不会匹配test-aregex或者testregex。

 

3.行的开始和结尾

为了判断一个字符串是否出现在一行的开始或者末尾,你必须使用^和$字符。如果^出现在字符串的开头,那么就会在序列头部进行匹配。同样对于$在行末尾的匹配也是如此。

接下来是几个小例子:

^test 表达式能够匹配到test和test011,但是它无法匹配dktest或者ttest01。

正则表达式test$能够匹配到test和01test,但是不能匹配test01。

正则表达式 ^test$则只会匹配到test

 

4.正则表达式中的通配符

在正则表达式中,点号(.)代表着任何字符。所以,当你去匹配无法推断的字符的时候可以用到点号。如果你想要去匹配字符串中的点号(.),需要添加\.来进行转义。

下面是几个例子:

^te.t能够匹配到test或者tept

^test\.me$只能匹配test.me

 

5.字符集

为了匹配字符,可以使用字符集。字符集被包含在一个中括号[]中,它包含了这个字符集里面的所有字符。为了验证一个区域里的所有数字和字幕,你必须要使用[0123456789a]。举个例子,^tes[t0e]$只会匹配到3个字符串:test,tes0,tese。

 

你也能够使用一些预先定义好的字符集:

    [0-9]等同于[0123456789]

    [a-z]等同于匹配所有小写字母

    [A-Z]等同于匹配所有大写字母

    [a-zA-Z]匹配了所有字母

接下来也有一些缩写:

    \d等同于[0-9]

    \w等同于[a-zA-Z0-9]

 

 

6.匹配字符的数量

直到目前,你学到的所有内容都只是定义一个字符。为了多次匹配一个字符,你必须要使用{x,y},x定义了出现的最小次数,y则是出现的最大次数。如果x,y其中一个数并没有指定,就会出现一个不确定的值。比如说,如果你忘了在{2,}中指定一个上界,这就代表匹配的次数至少是2次。

 

接下来是一些小例子:

^test{2,3}$只会匹配testt和testtt

^tests{0,1}$只会匹配test和tests

 

.^{1}$能够匹配除了空字符串以外的任何字符串

 

下面有一些缩写:

    *等同于{0}

    ?等同于{0,1}

    +等同于{1}

 




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值