带有lookbehind的正则表达式

时间:2013-08-14 05:10:17

标签: python regex

这应该是一个非常简单的问题,或者我认为。 这是文字:

MSYSID : 00014000 (TC1 Gen2)
PCIE   : x4ab     (neg: x4/x4)
TCID   : d7151210 (344017 @ 07/15/13 12:10)
SLOT   : 1

我想在TCID之后匹配所有字符串。 这个正则表达式应该有效:

(?<=TCID\s+:\s+).+

它具有正确的lookbehind和匹配的字符串,但它没有,我不明白为什么。 任何人都可以找到错误?我正在使用regexpal来验证它。

谢谢。

2 个答案:

答案 0 :(得分:2)

((?<=TCID\s{3}:\s)).+

问题是通配符不适用于后面。 因为外卡必须是固定长度的。

答案 1 :(得分:0)

查看Python专栏here。如果你可以获得匹配的捕获部分(TCID\s+:\s(\w.+)$)并设置为在换行符匹配^ $,(\w.+)应该有用。

我不相信Regexpal可以完全处理lookbehinds(许多风格都不能),而Python有一个限制,即lookbehind必须是固定长度。如果能够获得匹配的捕获部分,则不应该需要后视。

相关问题