Python Regex被动组和Lookbehind

Abd*_*lla 3 python regex

我有一个字符串:

# print thestring
abcd\t$500\n
Run Code Online (Sandbox Code Playgroud)

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

这是我的代码:

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

我在这做错了什么?

Vee*_*Arr 5

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

(?<=\$)\d+$
Run Code Online (Sandbox Code Playgroud)

  • @Abdulla是一个非捕获组,将内容组合在一起,但不存储结果.它比捕获组快.仅在需要重用此组的内容时才使用捕获组. (2认同)