在python中匹配方括号中数字的正则表达式
我需要匹配并返回包含在方括号中的数字的字符串索引。示例字符串: Gabrilovich和Markovitch[11,12]提出了一种使用 条件随机场[6]作为一个训练过程 在这里,我想使用正则表达式提取任何给定数字的索引,如11、12或6。我正在努力在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() 然而,我没有得到想要的结果。注意:
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
注意到我正在使用<代码>11代码>11代码>11代码>11<代码>11<代码>11代码>注意到我正在使用单词边界<代码>11<代码>11<代码>11<代码>11代码>11代码>11代码>11代码>11代码>11代码>11代码>代码>11代码>11,而不是<代码>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链接:)