我正在试图找出一个正则表达式模式来查找字符串中的所有匹配项:
string = "List[5] List[6], List[10], List[100:] List[-2:] List[-2]"
re.findall("List[(.*?)]" , string)
# Expected output ['5', '6', '10', '100:', '-2:', '-2']
# Output: []
在索引之间获取数字会有什么好的正则表达式模式?
答案 0 :(得分:8)
方括号是Regex's syntax中的特殊字符。所以,你需要逃脱它们:
>>> import re
>>> string = "List[5] List[6], List[10], List[100:] List[-2:] List[-2]"
>>> re.findall("List\[(.*?)\]", string)
['5', '6', '10', '100:', '-2:', '-2']
>>>
答案 1 :(得分:1)
稍微修改iCodez
回答。
In [102]: import re
In [103]: string = "List[5] List[6], List[10], List[100:] List[-2:] List[-2]"
In [105]: re.findall("\[(.*?)\]", string)
Out[105]: ['5', '6', '10', '100:', '-2:', '-2']
上面将提取方括号内的任何字符。如果字符串包含List[5] Add[3]
输出,则为[5, 6]
In [115]: string = "List[4] tuple[3]"
In [116]: re.findall("\[(.*?)\]", string)
Out[116]: ['4', '3']
上面的方法将提取方括号内的任何字符。