从字符串中提取数据,省略一个模式

时间:2013-04-29 21:42:23

标签: python regex

我对正则表达式完全不熟悉,我正试图得到这样的东西:

["Group", "s1", "s2", "Group2"]

来自字符串:

string = "_GRP_Group||s1||s2||Group2||"

我现在拥有的只是:

word = re.findall(r'([^\|]+)', string)

刚刚遗漏管道,我得到了这个:

['_GRP_Group', 's1', 's2', 'Group2']

有没有办法摆脱_GRP_前缀?

2 个答案:

答案 0 :(得分:2)

根据您对其他答案的评论,听起来_GRP_前缀是字符串的前缀,而不是每个单独的分割值?

试试这个:

string = "_GRP_Group||s1||s2||Group2||"
word = re.findall(r"(?:_GRP_)?([^|]+)", string)

答案 1 :(得分:1)

您无需使用正则表达式将第一个字符串拆分为||或删除前缀_GRP_。你可以使用split和切片:

words = "_GRP_Group||s1||s2||Group2||"[5:].split('||')

切片[5:]将从字符串中排除前五个字符 如果您不知道_GRP_会发生什么,可以使用replace

words = "_GRP_Group||s1||s2||Group2||".split('||')
words = [word.replace("_GRP_", "") for word in words]