匹配字符串包含x,后跟y

时间:2015-08-10 20:33:46

标签: python regex string python-3.x

如果字符串包含单词'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部分,但我不确定如何继续。这不应区分大小写。

4 个答案:

答案 0 :(得分:4)

试试这个正则表达式:

"except(?=[^\n]*?xyz)"

  • 仅采用文字except
  • 如果直到结束[^\n]*?
  • 可以找到xyz

Regex live here.

如何在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]