我希望匹配并分组这些列出的任何字词:
aboutus/
,race/
,cruise/
,westerlies/
,weather/
,reach/
,gear/
或empty_string
这是一个解决方案,但与empty_string不匹配:
^(aboutus|race|cruise|westerlies|weather|reach|gear)/$
所以我的问题是:如何在此匹配中包含空字符串?
我仍然没有为此找到一个好的解决方案。
所以我专门为empty_string添加了一个正则表达式:ie ^$
。
注意:这些正则表达式适用于django urls.py
。
更新:如果捕获组不包含/
答案 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
'' ''