2024-04-25 03:41:33 发布
网友
我有一根绳子
string = ''' making the regex for project is the basic work '''
如果regex库包含“project”而不是“work”,则它必须匹配。你知道吗
我是这样写的:
bool(re.search('project.*(?!work)'))
它正在返回被发现的真相。但它必须返回错误。你知道吗
由于回溯的原因,在量化模式之后放置一个带有懒惰或贪婪量词的负looksHead几乎永远不会产生预期的结果:一旦.*匹配0+个字符而不是换行符,它就会检查lookahead模式,因为在第一行结束之后没有work,结果是真。你知道吗
.*
work
要修复正则表达式,需要确保.与换行符匹配(传递re.DOTALL修饰符或在开头添加(?s)),并将.*移到lookahead:
.
re.DOTALL
(?s)
re.search(r'project(?!.*work)', s, re.DOTALL)
参见regex demo。你知道吗
这个模式意味着:找到project,然后如果在任何0+个字符之后有check子串,则匹配失败。你知道吗
project
check
请注意,如果您计划按原样使用这个正则表达式,那么使用if 'project' in s and 'work' not in s检查相同的内容可能更有意义。你知道吗
if 'project' in s and 'work' not in s
由于回溯的原因,在量化模式之后放置一个带有懒惰或贪婪量词的负looksHead几乎永远不会产生预期的结果:一旦
.*
匹配0+个字符而不是换行符,它就会检查lookahead模式,因为在第一行结束之后没有work
,结果是真。你知道吗要修复正则表达式,需要确保
.
与换行符匹配(传递re.DOTALL
修饰符或在开头添加(?s)
),并将.*
移到lookahead:参见regex demo。你知道吗
这个模式意味着:找到
project
,然后如果在任何0+个字符之后有check
子串,则匹配失败。你知道吗请注意,如果您计划按原样使用这个正则表达式,那么使用
if 'project' in s and 'work' not in s
检查相同的内容可能更有意义。你知道吗相关问题 更多 >
编程相关推荐