如何为这种情况编写正则表达式?

时间:2012-08-31 02:55:06

标签: python-2.7

我有这种模式

PlayerName<UID><STEAM_ID><TEAM>

^(.+?)<(.+?)><(.+?)><(.+?)>$

这看起来很容易解析(我需要具有saparately PlayerName,UID,STEAM_ID和TEAM)。但是playerName可能有“&lt;”和“&gt;”进去。例如

SkOrPiOn <38> rus<1020><STEAM_0:0:985442350><Unassigned>

我们得到了这个

[('SkOrPiOn ', '38> rus<1020', 'STEAM_0:0:985442350', 'Unassigned')]

如您所见,结果是错误的。

所有我能做的,这是反向字符串和正则表达式模式,以获得此

[('dengissanU', '053244589:0:0_MAETS', '0201', 'sur >83< nOiPrOkS')]

现在我可以撤回这些变量。但是有更正确的方式来获得我需要的东西吗?

1 个答案:

答案 0 :(得分:1)

摆脱第一个?。它是一个修饰符,意思是“匹配尽可能少的字符”。您希望尽可能匹配默认行为。

^(.+)<(.+?)><(.+?)><(.+?)>$