我有以下字符串:
"(rating 1-10, details): 9 is my score"
我想将所有数字提取到:
之后的列表中。所需的输出是[9]
假设
-表达中仅一个冒号
冒号后-0或更多值
-冒号之前的文本可以包含数字,也可以不包含数字
冒号和数字之间的字符可能只是空格,也可能不是空格
我尝试在Python中使用此REGEX表达式:
':*(\d+)'
我在这里的逻辑是,程序应先找到冒号,然后再找到数字(不确定数量的字符)。我不确定如何处理冒号和数字之间的字符数,数字会有所不同。我该怎么做?
答案 0 :(得分:1)
您可以使用此正则表达式查找字符串中冒号后出现的所有数字。
\d+(?!.*:)
说明:
\d+
->匹配一个或多个数字(?!.*:)
->负向搜索以确保冒号不会出现在我们不希望捕获的数字之前这是示例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。