如何根据python中的某些模式提取子字符串列表?
例如,
str = 'this {{is}} a sample {{text}}'.
预期结果:包含'is'和'text'
的python列表答案 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会很有用。