正则表达式在引号之间捕获字符串,尤其是当字符串以引号

时间:2015-11-06 08:35:46

标签: python regex

我有一个字符串,如下所示。

string= 'Sam007's Helsen007' is a 'good' boy's in 'demand6's6'.

我想在引号中提取字符串。

输出应该是,

['Sam007's Helsen007', 'good', 'demand6's6']

我写的正则表达式:

re.findall("(?:[^a-zA-Z0-9]*')(.*?)(?:'[^a-zA-Z0-9*])", text)

但这会产生输出

["Sam007's Helsen007", 'good', "s in 'demand6's6"]

当我使用修改正则表达式

re.findall("(?:[^a-zA-Z0-9]')(.*?)(?:'[^a-zA-Z0-9*])", text)

它给了我一个输出:

['good', "demand6's6"]

第二种情况似乎更合适,但如果字符串以引号开头,它就无法处理。

我该如何处理此案。

1 个答案:

答案 0 :(得分:6)

st= "'Sam007's Helsen007' is a 'good' boy's in 'demand6's6'"


print re.findall(r"\B'.*?'\B",st)

使用\B,即non word boundary

输出:["'Sam007's Helsen007'", "'good'", "'demand6's6'"]

如果仔细查看字符串,您需要一个字符串',其前面有一个非单词字符,'后面有一个非单词字符。