匹配逗号分隔列表

时间:2011-10-18 15:05:04

标签: python regex

我有一个像这样的示例字符串:

[{HST, AKST, PST, MST, CST, EST, AST, WAT, CET, GMT, EET, CCT, AWST, JST, EAST, NZT} {0:10}]

我对括号中的第一组项目感兴趣:

{HST, AKST, PST, MST, CST, EST, AST, WAT, CET, GMT, EET, CCT, AWST, JST, EAST, NZT}

我想解析集合并将其放入列表中。我正在使用python。

3 个答案:

答案 0 :(得分:2)

for match in re.finditer("(?i)[a-z]+", subject):
    # match start: match.start()
    # match end (exclusive): match.end()
    # matched text: match.group()

这将帮助您遍历列表中的“元素”。

编辑:您现在将其写为更大字符串的一部分。这改变了原来的问题。

for match in re.finditer(r"(?i)(?:(\b[a-z]+\b)[,}])", subject):
    # match start: match.start()
    # match end (exclusive): match.end()
    # matched text: match.group(1)

这将找到您的列表并提取其中的单词。

答案 1 :(得分:0)

正则表达式只是创建令牌,之后你需要用它们做些什么。幸运的是,python的标准正则表达式lib包含一个函数,可以为您提供它找到的所有值。

import re
input = '{HST, AKST, PST, MST, CST, EST, AST, WAT, CET, GMT, EET, CCT, AWST, JST, EAST, NZT}'
data = re.findall(r'\w+', input)

此外,这将找到所有“单词”。根据有效输入的不同,您可能需要更强大的正则表达式。在这方面,其他细节会有所帮助。

答案 2 :(得分:0)

要拆分字符串,可以使用string.split(s,',')。这将返回一个基于s的字符串列表,这些字符串分为字符','。

http://docs.python.org/library/stdtypes.html#str.split

要从较大的字符串中获取此列表,请首先分析“{”和“}”字符。