Python - 提取子字符串列表

时间:2010-12-21 17:49:57

标签: python regex

如何根据python中的某些模式提取子字符串列表?

例如,

str = 'this {{is}} a sample {{text}}'.

预期结果:包含'is'和'text'

的python列表

5 个答案:

答案 0 :(得分:14)

>>> import re
>>> re.findall("{{(.*?)}}", "this {{is}} a sample {{text}}")
['is', 'text']

答案 1 :(得分:2)

您可以使用以下内容:

res = re.findall("{{([^{}]*)}}", a)
print "a python list which contains %s and %s" % (res[0], res[1])

干杯

答案 2 :(得分:2)

假设“某些模式”意味着“双{}之间的单词”:

导入重新

re.findall('{{(\ w *)}}',string)

编辑:Andrew Clark的回答实现了“double {}之间的任何字符序列”

答案 3 :(得分:1)

基于正则表达式的解决方案适用于您的示例,但我会建议更复杂的输入更健壮的东西。

import re

def match_substrings(s):
    return re.findall(r"{{([^}]*)}}", s)

来自内而外的正则表达式:

[^}]匹配任何不是'}'的内容 ([^}]*)匹配任意数量的非}字符并将其分组 {{([^}]*)}}将上面的内容放在双括号

如果没有上面的括号,re.findall将返回整个匹配(即['{{is}}', '{{text}}']。但是,当正则表达式包含一个组时,findall将使用该匹配。

答案 4 :(得分:0)

您可以使用正则表达式来匹配{{}}之间发生的任何事情。这对你有用吗?

一般来说,对于标记大量文本中的某些字符串,suffix tree会很有用。