
[英]Python regular expression to match a list of numbers inside square brackets
[英]Regular Expression to match numbers in square brackets in python
我需要匹配并返回方括号中包含的数字的字符串索引。 示例字符串:
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个
看看我上传的示例https://regex101.com/r/lN8mA6/1
因为在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
,而不是111
或112
。
试试这个正则表达式: \\[\\s*(\\d*)(\\s*,\\s*(\\d*)\\s*)?(\\s*,\\s*(\\d*)\\s*)?(\\s*,\\s*(\\d*)\\s*)?(\\s*,\\s*(\\d*)\\s*)?(\\s*,\\s*(\\d*)\\s*)?(\\s*,\\s*(\\d*)\\s*)?\\]
(重复组(\\s*,\\s*(\\d)\\s*)?
以允许获取如此演示所示,方括号之间最多有7个数字。 如果你想更通用,你可以用\\[\\s*(\\d*)(\\s*,\\s*(\\d*)\\s*)*\\]
替换这个正则表达式,允许无限数量的列表中的数字(但是您将获得第一个和最后一个仅在组\\1
和\\3
)
如果您使用第一个,您将允许逗号周围的空格,您将获得第1,3,5,7,11,13和15组中的数字。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.