正则表达式从菜单中捕获选项和字符串

时间:2015-09-25 17:57:51

标签: python regex

我想使用以下正则表达式捕获每个选项及其后面的文本。奇怪的是,正则表达式只捕获带有一位数的编号选项。任何帮助表示赞赏。

>>> s = '[a] Option a\n[1] Option 2\n[12] option 12'
>>> re.findall('\[([a-z]|[\d\+])\]\s+(.*)?\\r?\\n?', s,re.M)
[('a', 'Option a'), ('1', 'Option 2')]

3 个答案:

答案 0 :(得分:1)

删除+符号前的反斜杠,以免意外逃脱。

经过一些修补后,我最终得到了

>>> import re
>>> s = '[a] Option a\n[1] Option 2\n[12] option 12'
>>> re.findall('\[(\w+)\]\s+(.*)', s)
[('a', 'Option a'), ('1', 'Option 2'), ('12', 'option 12')]

答案 1 :(得分:1)

[\d\+]更改为\d+[\d\+]将匹配单个数字或+符号

>>> s = '[a] Option a\n[1] Option 2\n[12] option 12'
>>> re.findall('\[([a-z\d]+)\]\s+(.*)?\\r?\\n?', s)
[('a', 'Option a'), ('1', 'Option 2'), ('12', 'option 12')]

答案 2 :(得分:1)

这些似乎过于复杂。这会捕获您要查找的群组。

re.findall('\[(\w+)\]\s(\w*\s\w+)', s,re.M)

demo