gpt4 book ai didi

python - 否定正则表达式的一部分

转载 作者:太空宇宙 更新时间:2023-11-03 11:24:35 25 4
gpt4 key购买 nike

我正在尝试构建正则表达式以在 python 代码中查找类,而无需从 object 显式继承。

import re

test_string = '''
class Test(object):
pass

class Test:
pass
'''

regex = r'class .*(?!\(object\)).*'

re.compile(regex).findall(test_string)

这给了我:

'class Test(object):', 'class Test:'

Regular expression visualization

Debuggex Demo

但我只需要'class Test:'

同时积极的前瞻性工作正常:

>>> print regex = r'class .*(?=\(object\)).*'
['class Test(object):']

这里有什么问题?

最佳答案

您需要在“class”之后使用 (?!.*\(object\)) 负前瞻:

class (?!.*\(object\)).*

参见 regex demo

.*(?!\(object\)).* 子模式匹配任何 0+ 字符,但不跟在 (object) 后面的换行符除外。它有效地抓取了所有行直到它的末尾,并且在它之后没有找到任何 (object) 。第二个 .* 甚至不匹配任何内容,因为所有字符都已经“属于”第一个 .*.

(?!.*\(object\))中,检查发生在消耗了class+space之后,一旦有就匹配失败(object) 当前行的某处。

关于python - 否定正则表达式的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36644753/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com