Python 正则表达式从菜单中捕获选项及其后面的字符串
我想使用下面的正则表达式捕获每个选项及其后面的文本。奇怪的是,正则表达式只捕获带有一个数字的编号选项。感谢您的帮助Python 正则表达式从菜单中捕获选项及其后面的字符串,python,regex,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')] 删除+符号前的反斜杠,以免意外逃脱 经过
>>> 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')]
删除+符号前的反斜杠,以免意外逃脱 经过一番修补之后,我最终得到了
>>> 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')]
删除+符号前的反斜杠,以免意外逃脱 经过一番修补之后,我最终得到了
>>> 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')]
删除+符号前的反斜杠,以免意外逃脱 经过一番修补之后,我最终得到了
>>> 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')]
删除+符号前的反斜杠,以免意外逃脱 经过一番修补之后,我最终得到了
>>> 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')]
将
[\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')]
将
[\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')]
将
[\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')]
将
[\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')]
这些似乎过于复杂。这将捕获您要查找的组
re.findall('\[(\w+)\]\s(\w*\s\w+)', s,re.M)
这些似乎过于复杂。这将捕获您要查找的组
re.findall('\[(\w+)\]\s(\w*\s\w+)', s,re.M)
这些似乎过于复杂。这将捕获您要查找的组
re.findall('\[(\w+)\]\s(\w*\s\w+)', s,re.M)
这些似乎过于复杂。这将捕获您要查找的组
re.findall('\[(\w+)\]\s(\w*\s\w+)', s,re.M)
啊。。+之前的反斜杠是无意的。谢谢你指出这一点。我也经常遇到这种情况。事实上,你还需要去掉
\d+
周围的方括号。啊。。+之前的反斜杠是无意的。谢谢你指出这一点。我也经常遇到这种情况。事实上,你还需要去掉\d+
周围的方括号。啊。。+之前的反斜杠是无意的。谢谢你指出这一点。我也经常遇到这种情况。事实上,你还需要去掉\d+
周围的方括号。啊。。+之前的反斜杠是无意的。谢谢你指出这一点。我也经常遇到这种情况。实际上,你还需要删除\d+
周围的方括号。我最喜欢你的解决方案。仅供参考:re.M
是完全多余的。@Stribizev:谢谢,/我不熟悉python。。。。无论如何更新了答案:)我最喜欢你的解决方案。仅供参考:re.M
是完全多余的。@Stribizev:谢谢,/我不熟悉python。。。。无论如何更新了答案:)我最喜欢你的解决方案。仅供参考:re.M
是完全多余的。@Stribizev:谢谢,/我不熟悉python。。。。无论如何更新了答案:)我最喜欢你的解决方案。仅供参考:re.M
是完全多余的。@Stribizev:谢谢,/我不熟悉python。。。。无论如何,我更新了答案:)