2017-02-10 93 views
1

我有一个字符串正则表达式<>

"Absolutely<U+653C><U+3E64><U+613C><U+3E30><U+623C><U+3E64><U+653C><U+3E64><U+623C><U+3E31><U+383C><U+3E64> Friendship goals exceeded here!! Sydney, Melbourne, Connecticut &amp; South Carolina<U+653C><U+3E64><U+613C><U+3E30><U+623C><U+3E64><U+653C><U+3E64><U+623C><U+3E31><U+383C><U+3E61>\r\n" 

我想只有<>部分从字符串中分离出来。我试过<.*>但它返回

<U+653C><U+3E64><U+613C><U+3E30><U+623C><U+3E64><U+653C><U+3E64><U+623C><U+3E31><U+383C><U+3E64> Friendship goals exceeded here!! Sydney, Melbourne, Connecticut &amp; South Carolina<U+653C><U+3E64><U+613C><U+3E30><U+623C><U+3E64><U+653C><U+3E64><U+623C><U+3E31><U+383C><U+3E61> 

我不想要他们之间的单词。我想输出为,

["<U+653C><U+3E64><U+613C><U+3E30><U+623C><U+3E64><U+653C><U+3E64><U+623C><U+3E31><U+383C><U+3E64>", "<U+653C><U+3E64><U+613C><U+3E30><U+623C><U+3E64><U+653C><U+3E64><U+623C><U+3E31><U+383C><U+3E61>"] 

任何帮助。我卡在Python中。

+1

''是贪婪加一个''的第一次出现。?。例如'<.*?>'。 – chris85

+0

这不是重复的。 '。*?'是不够的。 –

+0

@EricDuminil \t缩回。 – MYGz

回答

1

你需要一个negative lookahead。这种模式匹配,直到它找到第>后面没有<

import re 

text = "Absolutely<U+653C><U+3E64><U+613C><U+3E30><U+623C><U+3E64><U+653C><U+3E64><U+623C><U+3E31><U+383C><U+3E64> Friendship goals exceeded here!! Sydney, Melbourne, Connecticut &amp; South Carolina<U+653C><U+3E64><U+613C><U+3E30><U+623C><U+3E64><U+653C><U+3E64><U+623C><U+3E31><U+383C><U+3E61>\r\n" 

pattern = "<.*?>(?!<)" 

print re.findall(pattern, text) 
#['<U+653C><U+3E64><U+613C><U+3E30><U+623C><U+3E64><U+653C><U+3E64><U+623C><U+3E31><U+383C><U+3E64>', '<U+653C><U+3E64><U+613C><U+3E30><U+623C><U+3E64><U+653C><U+3E64><U+623C><U+3E31><U+383C><U+3E61>'] 
+0

非常感谢!像魔术一样工作。对模式的任何解释都会有帮助。 – Yogaraj

+0

更新了文档链接和简短说明。你现在明白吗? –

0

您可以使用​​而不是<.*>

这是你可以做什么

s = "Absolutely<U+653C><U+3E64><U+613C><U+3E30><U+623C><U+3E64><U+653C><U+3E64><U+623C><U+3E31><U+383C><U+3E64> Friendship goals exceeded here!! Sydney, Melbourne, Connecticut &amp; South Carolina<U+653C><U+3E64><U+613C><U+3E30><U+623C><U+3E64><U+653C><U+3E64><U+623C><U+3E31><U+383C><U+3E61>\r\n" 

result = re.findall('<.*?>(?!<)',s) 
+0

他想要两件物品。 – ryugie

+0

谢谢!但它返回一个由两部分组成的连接字符串。我需要将它们分开为两个不同的。 – Yogaraj

相关问题