Python Regex被动组和Lookbehind

时间:2012-03-22 20:48:06

标签: python regex

我有一个字符串:

# print thestring
abcd\t$500\n

我想在没有美元符号的情况下提取500的美元价值。

这是我的代码:

# trying positive lookbehind
m = re.search('(<=\$)\d+$',thestring)
# trying passive groups
m = re.search('(?:\$)\d+$',thestring)

我在这里做错了什么?

2 个答案:

答案 0 :(得分:5)

非捕获组不会从匹配的子字符串中删除结果,因此这就是第二个解决方案无效的原因。第一个解决方案应该可以工作,但是您似乎错误地选择了正面lookbehind的语法。它应该是:

(?<=\$)\d+$

答案 1 :(得分:3)

首先,您应该逃避反斜杠或使用原始字符串:

'(<=\\$)\\d+$'

r'(<=\$)\d+$'

接下来,为什么要使用lookbehind或被动组?你想要捕获这个数字吧?怎么样:

m = re.search('\\$(\\d+)',thestring)

然后使用m.group(1)检索您的号码。