Python 从字符串变量中匹配索引的好正则表达式是什么?

Python 从字符串变量中匹配索引的好正则表达式是什么?,python,regex,Python,Regex,我有一个字符串声明为: String testString = "1: 2, 3\n2: 3, 4\n3: 1\n4: 2\n5: 6, 7, 8" 我想编写一个正则表达式,它可以返回索引,即返回以下列表(或任何集合): 我知道如果我把正则表达式写成: regex = r'[0-9]:' 我会得到: [1:,2:,3:,4:,5:] 但是,这不是期望的输出。我刚刚开始使用正则表达式,我已经将我所知道的(到目前为止)应用于这个问题,但是,我无法编写有效的正则表达式。非常感谢您的帮助。您可以使

我有一个字符串声明为:

String testString = "1: 2, 3\n2: 3, 4\n3: 1\n4: 2\n5: 6, 7, 8"
我想编写一个正则表达式,它可以返回索引,即返回以下列表(或任何集合):

我知道如果我把正则表达式写成:

regex = r'[0-9]:'
我会得到:

[1:,2:,3:,4:,5:]

但是,这不是期望的输出。我刚刚开始使用正则表达式,我已经将我所知道的(到目前为止)应用于这个问题,但是,我无法编写有效的正则表达式。非常感谢您的帮助。

您可以使用
r'[0-9]+(?=:)'
,它使用了前瞻您可以使用
r'[0-9]+(?=:)'
,它使用了前瞻
regx=re.compile(“(?
regx=re.compile)(?您可以使用您的正则表达式,然后使用列表理解删除后面的冒号:

regx = re.compile('(?<!\d)\d+(?=\s*:)')
>>> [a.strip(':') for a in re.findall(r"[0-9]:", testString)]
['1', '2', '3', '4', '5']

您可以使用正则表达式,然后使用列表理解删除尾随冒号:

>>> [a.strip(':') for a in re.findall(r"[0-9]:", testString)]
['1', '2', '3', '4', '5']

您正在使用python吗?标记上是这样说的,但是您的第一个代码示例看起来不像python。如果您正在使用,您可以使用正则表达式,然后使用
s.strip(':')去掉':'字符
谢谢,很抱歉,第一个代码片段看起来有点像Java。下次我会更加小心。你在使用python吗?标签上是这么说的,但你的第一个代码示例看起来不像python。如果是,你可以使用正则表达式,然后用
s.strip(':')去掉“:”字符
谢谢,很抱歉第一个片段看起来有点像Java。下次我会更小心。我想知道为什么我把
(?作为loobhind断言,它是无用的。我想知道为什么我把
(?作为loobhind断言,它是无用的