2012-08-31 49 views
1

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

PlayerName<UID><STEAM_ID><TEAM> 

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

,这看起来好像很容易解析(我需要有saparately PlayerName,UID,STEAM_ID和TEAM)。但是playerName可能包含“<”和“>”。例如

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

非常感谢! – Neka