使用Python正则表达式可随时从某个字符之后的字符串中提取数字

时间:2018-11-12 19:57:57

标签: python regex python-3.x wildcard

我有以下字符串:

"(rating 1-10, details): 9 is my score"

我想将所有数字提取到:之后的列表中。所需的输出是[9]

假设

-表达中仅一个冒号

冒号后

-0或更多值

-冒号之前的文本可以包含数字,也可以不包含数字

冒号和数字之间的

字符可能只是空格,也可能不是空格

我尝试在Python中使用此REGEX表达式:

':*(\d+)'

我在这里的逻辑是,程序应先找到冒号,然后再找到数字(不确定数量的字符)。我不确定如何处理冒号和数字之间的字符数,数字会有所不同。我该怎么做?

1 个答案:

答案 0 :(得分:1)

您可以使用此正则表达式查找字符串中冒号后出现的所有数字。

\d+(?!.*:)

说明:

  • \d+->匹配一个或多个数字
  • (?!.*:)->负向搜索以确保冒号不会出现在我们不希望捕获的数字之前

Demo

这是示例python代码,

import re
s = '(rating 1-10, 56 details): 9 is my 22 jj 45 score'
numbers = re.findall('\d+(?!.*:)', s)
print(numbers)

这将打印以下输出,

['9', '22', '45']

并且不会捕获出现在结肠前的1、10和56。