在python中匹配方括号中数字的正则表达式

在python中匹配方括号中数字的正则表达式,python,regex,text,Python,Regex,Text,我需要匹配并返回包含在方括号中的数字的字符串索引。示例字符串: Gabrilovich和Markovitch[11,12]提出了一种使用 条件随机场[6]作为一个训练过程 在这里,我想使用正则表达式提取任何给定数字的索引,如11、12或6。我正在努力 pattern = re.compile(r'[/11/]') # for 11 result = re.search(pattern, text, flags=0) print result.start() 然而,我没有得到想要的结果。注意:

我需要匹配并返回包含在方括号中的数字的字符串索引。示例字符串:

Gabrilovich和Markovitch[11,12]提出了一种使用 条件随机场[6]作为一个训练过程

在这里,我想使用正则表达式提取任何给定数字的索引,如11、12或6。我正在努力

pattern = re.compile(r'[/11/]') # for 11
result =  re.search(pattern, text, flags=0)
print result.start()

然而,我没有得到想要的结果。注意:我需要一个解决方案来匹配我想要的确切数字,而不是括号内的任何给定数字。

使用这个正则表达式
(\[,\d\s]*)11([,\d\s]*\])
来检索文本中的所有11


看一看我上传的示例

,因为在Python中,我们不能在标准的
re
模块中使用可变宽度lookbehinds,您可以使用捕获组,然后检查组的索引

用于捕获
11

pattern = re.compile(r'(\[[^\]]*)\b(11)\b(?=[^\]]*\])') # for 11
text = 'Gabrilovich and Markovitch [11, 12] propose a method to use conditional random fields [6] as a training process.....'
result =  re.search(pattern, text)
if result:
    print result.start(2)
结果:
28


注意到我正在使用<代码>11111111<代码>11<代码>11注意到我正在使用单词边界<代码>11<代码>11<代码>11<代码>11111111111111代码>1111,而不是<代码>111 111<代码>111 111代码>111或<代码>111代码>11<代码>11<代码>或<代码>112<代码>112<代码>112<代码>112<代码>112<代码>112<代码>112<代码>112<代码>112<代码>112<代码>112<代码>112<代码>112<代码>112<代码>112<代码>112<112112<代码>112<代码>112<代码>112<代码>112(\s*,\s*(\d)\s*)重复执行?,以允许在方括号之间获得最多7个数字),如图所示。如果您想更一般一些,可以将此regexp替换为
\[\s*(\d*)(\s*,\s*(\d*)\s*)*\]
,它允许列表中的数字数量不定(但随后您将只在组
\1
\3
中获得第一个和最后一个)


如果使用第一个,逗号周围将留有空格,数字将分为第1、3、5、7、11、13和15组。

非常感谢regex101链接:)