我有一个字符串,如下所示。
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"]
第二种情况似乎更合适,但如果字符串以引号开头,它就无法处理。
我该如何处理此案。
答案 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'"]
如果仔细查看字符串,您需要一个字符串'
,其前面有一个非单词字符,'
后面有一个非单词字符。