我有以下格式的列表:
s = "['abc', 'xxx', '3c2', '111112', 'x']"
如何获取元素“1”——[ 之后但 , 之前的项目。到目前为止,我有:
re.search(r'[.+,',s)
但它太“贪心”了。这里正确的正则表达式是什么?
请您参考如下方法:
您的列表似乎是有效的 python,所以正则表达式不是一个选项(正则表达式不能可靠地解析编程语言)。考虑 ast.literal_eval相反:
>>> s = "['abc', 'xxx', '3c2', '111112', 'x']"
>>> import ast
>>> ast.literal_eval(s)[0]
'abc'
如果您坚持使用正则表达式,则必须创建一个简单的复杂表达式来匹配 python 文字。一个只处理单引号字符串的天真的例子是:
>>> s = "['abc', 'xxx', '3c2', '111112', 'x']"
>>> import re
>>> str_re = r"'(\\.|[^'])*'"
>>> re.search(str_re, s).group(1)
'abc'
很明显,向其中添加双引号、多引号、原始字符串和字节字符串,并最终添加各种数字格式将是一项乏味且完全没有意义的工作;)
