如果字符串包含单词'except'并且后跟'xyz',我想评估为true。例如
blah except xyz => true
except xyz => true
blah except abc => false
blah except abc, xyz => true
blah except xyz, abc => true
xyz except abc => false
这种做法最灵活的方式是什么?正则表达似乎过度杀戮。这可能只用于一个功能。我已使用in
运算符查找字符串的except
部分,但我不确定如何继续。这不应区分大小写。
答案 0 :(得分:4)
试试这个正则表达式:
"except(?=[^\n]*?xyz)"
except
[^\n]*?
xyz
。如何在python中使用它?
import re
word = 'blah except xyz => true'
regexp = re.compile(r'except(?=[^\n]*?xyz)')
if regexp.search(word) is not None:
print 'matched'
希望它有所帮助。
答案 1 :(得分:3)
字符串操作怎么样?
if 'except' in my_string.lower() and my_string.lower().find('xyz') > my_string.lower().find('except'):
return True
您也可以使用EAFP并避免两次查找'except'
:
try:
if my_string.lower().index('xyz') > my_string.lower().index('except'):
return True
else:
return False
except ValueError:
return False
如果你只需要真实的价值而不是实际的布尔值,那就更简单了:
try:
if my_string.lower().index('xyz') > my_string.lower().index('except'):
return True
except ValueError:
return
答案 2 :(得分:0)
这是正则表达式确实有意义的案例之一:
if re.search('except.*xyz', string):
...
简单,快速,优雅。
答案 3 :(得分:0)
我认为这是最具可读性的:</ p>
'except' in my_string and 'xyz' in my_string.split('except', 1)[1]