我有这种字符串
hello 45 blabla 12 100 code 45 13 093bb
我想匹配关键字code
后面的第二个数字(使用Python)。在此示例中,应返回"13"
。
这是我找到的解决方案
s = "hello 45 blabla 12 100 code 45 13 093bb "
re.search("code \d+ \d+",s).group(0).split(" ")[-1]
# '13'
它有效,但可能有更好的解决方案。我尝试过使用lookbehind但是我遇到了python不能容忍欠定长度的问题的问题(我不知道code
后面的第一个数字中的位数)。我试过了
re.search("(?<=code \d+)\d+",s).group(0)
# raise error, v # invalid expression
# sre_constants.error: look-behind requires fixed-width pattern
答案 0 :(得分:3)
你可以一起跳过re
>>> a = s.split()
>>> a[a.index('code') + 2]
'13'
答案 1 :(得分:1)
通过将所需的值放入组中,可以使其更清晰。
>>> re.search("code \d+ (\d+)",s).group(1)
'13'
答案 2 :(得分:1)
re.search("code \d+ (\d+)", s).group(1)
应该有效。 ()括号标识要捕获的组。 组0是整个文本,以下是按顺序编号的组。
答案 3 :(得分:1)
这比re.search
解决方案稍短:
re.findall('code \d+ (\d+)', s)
它将仅返回与()