python否定搜索

2024-04-25 03:41:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一根绳子

    string = '''
        making the regex for project  
        is the basic work '''

如果regex库包含“project”而不是“work”,则它必须匹配。你知道吗

我是这样写的:

bool(re.search('project.*(?!work)'))

它正在返回被发现的真相。但它必须返回错误。你知道吗


Tags: thereprojectforsearchstringbasicis
1条回答
网友
1楼 · 发布于 2024-04-25 03:41:33

由于回溯的原因,在量化模式之后放置一个带有懒惰或贪婪量词的负looksHead几乎永远不会产生预期的结果:一旦.*匹配0+个字符而不是换行符,它就会检查lookahead模式,因为在第一行结束之后没有work,结果是。你知道吗

要修复正则表达式,需要确保.与换行符匹配(传递re.DOTALL修饰符或在开头添加(?s)),并将.*移到lookahead:

re.search(r'project(?!.*work)', s, re.DOTALL)

参见regex demo。你知道吗

这个模式意味着:找到project,然后如果在任何0+个字符之后有check子串,则匹配失败。你知道吗

请注意,如果您计划按原样使用这个正则表达式,那么使用if 'project' in s and 'work' not in s检查相同的内容可能更有意义。你知道吗

相关问题 更多 >