对于以下正则表达式和输入,我能够获得 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']
如果这就是您要找的,请告诉我。否则,请更新您的帖子以阐明您的需求。
添加回答
举报
0/150
提交
取消