Python - 如何使用正则表达式拆分字符串?

Python - How to split a string using regular expressions?

我想拆分以下字符串以分别获取每个属性:

String_one: 'archived': True, 'id': '30znq1', '_has_fetched': True
String_two: \'hidden\': False, \'user_reports\': [], \'num_reports\': None

我知道所有属性都以“, '”或“, \\'”结尾 最初我只是使用两个 string.spilt()

1) line.split(', \'')
2) line.split(', \\'')

这两个都完成了工作,但我正在处理大量数据,而且这两个都非常笼统,并且模式在数据中的某处不应该匹配。

所以我尝试了 re.split:

reg_split_no_esc = re.compile(', \'(.*\': .*)')
reg_split_esc    = re.compile(', \\'(.*\\': .*)')

line = re.split(reg_split_esc, line)
line = re.split(reg_split_no_esc, line)

正则表达式是为了找到第一个“,\'”,如果它后面跟着一个字符单引号和一个冒号,那么它的拆分就是为了捕捉“,\'”后面的内容。

reg_split_no_esc 在第一个拆分条件下拆分,但不再适用,另一个模式不起作用。

任何帮助将不胜感激

编辑: 我的第一个正则表达式有效,但它只拆分第一个元素,其余的不拆分,所以它看起来像这样:

_uniq': None

suggested_sort': None, 'secure_media_embed': {} 'report_reasons': None, '_params': {}

为了完整起见,我找到了答案,它是 lookahead assertion

最终模式如下:

re.compile(', \'(?=\w*\': )')

干杯