为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

RISEBY 2021-09-14 10:20:23
对于以下正则表达式和输入,我能够获得 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”值。如何获取列名?
查看完整描述

2 回答

?
子衿沉夜

TA贡献1828条经验 获得超3个赞

您的第一个声明如何从正面展望和后面的声明中获取匹配对象有点令人困惑。假设您想要捕获索引名称FIRST_ONE和剩余的列名称,PLATFORM_CD ,SYSTEM_NAME ,DB_NAME ,TABLE_NAME ,COLUMN_NAME您可以简化您的正则表达式并使用它来捕获您需要的所有内容。


(?:\w+)(?=\s*(?:\(|,|\)))

相同的 Python 代码,


import re

line = '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']

如果这就是您要找的,请告诉我。否则,请更新您的帖子以阐明您的需求。


查看完整回答
反对 回复 2021-09-14
  • 2 回答
  • 0 关注
  • 174 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信