我的测试字符串:

1. default, no   hair, w/o glass
2. ski suit
3. swim suit


如何确定头发前是否有“ no”或“ w / o”(之间可能有1个以上的空格)?

最终目标:

1. default, no   hair, w/o glass    returns False
1. default, no hair, w/o glass    returns False
1. default, w/o hair, w/o glass    returns False
1. default, w hair, w/o glass    returns True


目的是告诉您是否应该使用玻璃。

我的尝试:(?<!no\s)hairhttp://rubular.com/r/PdKbmyxpGh

您可以在上面的示例中看到,如果有多个空格,那么我的正则表达式将无法正常工作。

最佳答案

re模块不支持可变长度(零宽度)后向查找。

您需要:


固定hair之前的空格数
使用regex模块




使用负前瞻的短函数:

def re_check(s):
    return re.search(r'^[^,]+,\s+(?!(?:no|w/o)\s+hair,)', s) is not None

>>> re_check('default, no   hair, w/o glass')
False
>>> re_check('default, w/o hair, w/o glass')
False
>>> re_check('default, w hair, w/o glass')
True

关于python - 如何在python的正则表达式中使用星号?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35691454/

10-08 21:44