正则表达式匹配空字符串?

时间:2014-03-12 14:18:18

标签: python regex django django-urls

我希望匹配并分组这些列出的任何字词:

aboutus/race/cruise/westerlies/weather/reach/gear/empty_string

这是一个解决方案,但与empty_string不匹配:

^(aboutus|race|cruise|westerlies|weather|reach|gear)/$

所以我的问题是:如何在此匹配中包含空字符串?

我仍然没有为此找到一个好的解决方案。

所以我专门为empty_string添加了一个正则表达式:ie ^$

注意:这些正则表达式适用于django urls.py

更新:如果捕获组不包含/

,那会更好

4 个答案:

答案 0 :(得分:8)

试试这个:

^(aboutus|race|cruise|westerlies|weather|reach|gear)?/$

编辑: 如果'/'在每种情况下除了空字符串都试试这个

^((aboutus|race|cruise|westerlies|weather|reach|gear)(/))?$

答案 1 :(得分:6)

使用此

^$|^(aboutus|race|cruise|westerlies|weather|reach|gear)/$

答案 2 :(得分:0)

您可以选择捕获组:

^(aboutus|race|cruise|westerlies|weather|reach|gear)?/$

答案 3 :(得分:0)

import re

rgx = re.compile('^((aboutus|race|cruise|westerlies'
                 '|weather|reach|gear)/|)$')

# or

li = ['aboutus','race','cruise','westerlies',
      'weather','reach','gear']
rgx = re.compile('^((%s)/|)$' % '|'.join(li))


for s  in ('aboutus/',
           'westerlies/',
           'westerlies/ ',
           ''):
    m = rgx.search(s)
    print '%-21r%r' % (s,rgx.search(s).group() if m else m)  

结果

'aboutus/'           'aboutus/'
'westerlies/'        'westerlies/'
'westerlies/ '       None
''                   ''