首页 > 解决方案 > python中的正则表达式拆分字符串

问题描述

我有一个这样的字符串

SELECT [Orders$].[Category] AS [Category],&#13,&#10,  [Orders$].[City] AS [City],&#13,&#10,  [Orders$].[Country] AS [Country],&#13,&#10,  [Orders$].[Customer ID] AS [Customer ID],&#13,&#10,  [Orders$].[Customer Name] AS [Customer Name],&#13,&#10,  [Orders$].[Discount] AS [Discount],&#13,&#10,  [Orders$].[Profit] AS [Profit],&#13,&#10,  [Orders$].[Quantity] AS [Quantity],&#13,&#10,  [Orders$].[Region] AS [Region],&#13,&#10,  [Orders$].[State] AS [State],&#13,&#10,  [People$].[Person] AS [Person],&#13,&#10,  [People$].[Region] AS [Region (People)]&#13,&#10,FROM [Orders$]&#13,&#10,  INNER JOIN [People$] ON [Orders$].[Region] = [People$].[Region]

我只想动态获取 Category 和 city 而无需对 word 进行硬编码。我应该使用什么样的模式?这样我会将这两个值存储在一个数组中,该数组在下游程序中循环。

我尝试拆分文本

colName = re.split("\W+", result)

['SELECT',
 'Orders',
 'Category',
 'AS',
 'Category',
 '13',
 '10',
 'Orders',
 'City',
 'AS',
 'City',
 '13',
 '10',

它给了我整个字符串,现在不知道如何进行。有人可以帮忙吗??

谢谢

标签: pythonregexsplit

解决方案


不要使用拆分,使用re.findall().

matches = re.findall(r'\bAS\s+\[(.+?)\]', yourString)

您想要的单词在group(1)每个匹配项中matches


推荐阅读