對于以下正則表達式和輸入,我能夠獲得 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
提交
取消