Python从正面展望中获取分组值

对于以下正则表达式和输入,我能够获得 group(1) 匹配对象。但是如何从正面展望中获取匹配对象?

正则表达式是: (\w+)(?=\s*()|(?:(?<=,|())\s*(\w+)\s*(?:\s*(\w+)\s *)?


输入是:PRIMARY INDEX FIRST_ONE (PLATFORM_CD,SYSTEM_NAME,DB_NAME,TABLE_NAME,COLUMN_NAME);


在此我能够获得索引名称,即“FIRST_ONE”。我还需要获取列名。怎么做?


我试图得到组(2)但它返回无


我试过的代码是:


upiOrPiValue = re.search(r'(\w+)(?=\s*\()|(?:(?<=,|\())\s*(\w+)\s*(?:\s*(\w+)\s*)?',line)

                print('line : ',line)

                #print('---->',upiOrPiValue)

                if upiOrPiValue == None:

                    pass

                else:

                    PiorUpiName = upiOrPiValue.group(1)

                    print('PiorUpiName : ',PiorUpiName)

                    print('upiOrPiValue.group(2) : ',upiOrPiValue.group(2))

upiOrPiValue.group(1) 正在返回“FIRST_ONE”值。如何获取列名?


RISEBY
浏览 175回答 2
2回答

子衿沉夜

您的第一个声明如何从正面展望和后面的声明中获取匹配对象有点令人困惑。假设您想要捕获索引名称FIRST_ONE和剩余的列名称,PLATFORM_CD ,SYSTEM_NAME ,DB_NAME ,TABLE_NAME ,COLUMN_NAME您可以简化您的正则表达式并使用它来捕获您需要的所有内容。(?:\w+)(?=\s*(?:\(|,|\)))相同的 Python 代码,import reline = 'PRIMARY INDEX FIRST_ONE ( PLATFORM_CD ,SYSTEM_NAME ,DB_NAME ,TABLE_NAME ,COLUMN_NAME );'arr = re.findall(r'(?:\w+)(?=\s*(?:\(|,|\)))', line)print(arr)哪个打印,['FIRST_ONE', 'PLATFORM_CD', 'SYSTEM_NAME', 'DB_NAME', 'TABLE_NAME', 'COLUMN_NAME']如果这就是您要找的,请告诉我。否则,请更新您的帖子以阐明您的需求。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python