我有一个字符串:
# print thestring
abcd\t$500\n
我想在没有美元符号的情况下提取500的美元价值。
这是我的代码:
# trying positive lookbehind
m = re.search('(<=\$)\d+$',thestring)
# trying passive groups
m = re.search('(?:\$)\d+$',thestring)
我在这里做错了什么?
答案 0 :(得分:5)
非捕获组不会从匹配的子字符串中删除结果,因此这就是第二个解决方案无效的原因。第一个解决方案应该可以工作,但是您似乎错误地选择了正面lookbehind的语法。它应该是:
(?<=\$)\d+$
答案 1 :(得分:3)
首先,您应该逃避反斜杠或使用原始字符串:
'(<=\\$)\\d+$'
或
r'(<=\$)\d+$'
接下来,为什么要使用lookbehind或被动组?你想要捕获这个数字吧?怎么样:
m = re.search('\\$(\\d+)',thestring)
然后使用m.group(1)
检索您的号码。