我有一个字符串:
2km739
我正在尝试使用正则表达式捕获2739
我知道我可以使用两个捕获组并将它们组合起来(编辑:或者在捕获组后提取数字字符),但在这种情况下这会更容易一些,如果可能的话我很好奇。
我有这个:
([0-9](?=[km])(?<=[km])\d+)
但它不起作用
仅当我在某处添加km
([0-9](?=[km])km(?<=[km])\d+)
我也认为这会起作用,但我学会了非捕获组仍然可以捕获但外部组
([0-9](?:km)\d+)
答案 0 :(得分:0)
如果要删除所有字母并仅捕获数字,可以更改捕获组以执行此操作。
(\d+)
您需要在最后合并所有捕获的组,因为您无法在不关闭捕获组的情况下跳过输入的部分。
答案 1 :(得分:0)
在你的正则表达式中,你使用[km]
这是character class的符号,并且会匹配k
或m
。
也许可以选择以积极的前瞻方式捕捉群组,然后加入群组:
str = "2km739"
reobj = re.compile(r"^(?=(\d)km(\d+))")
match = reobj.search(str)
print ''.join(match.groups())