用于分隔字符串的正则表达

时间:2016-09-11 08:07:30

标签: python regex

我有以下字符串

  

长串1 [成功50]长串2 [苹果5香蕉20橙75]   长串3 [失败:100]

现在我想把它分成三个字符串:

  1. 长串1 [成功50]
  2. 长串2 [苹果5香蕉20橙75]
  3. 长串3 [失败:100]
  4. 在[]里面可能有一个或多个字符串和数字组合的实例,数字从0到100。

    如何在python中使用正则表达式来完成?

2 个答案:

答案 0 :(得分:3)

在这么简单的任务中不需要正则表达式。只需使用Python的内置str.replace()方法,如下所示:

your_str = your_str.replace(']', ']\n')

要拆分并获取列表,请使用your_str.split(']')

但是如果你真的想要正则表达式或括号内的字符串可以包含更多括号,你可以试试这个:

import re

your_str = "Long string 1 [sucess 50] long string 2 [apple 5 banana 20 orange 75] long string 3 [failure: 100]"

your_str = re.sub(r'\[(.+? [0-9]+)\] ', r'[\1]\n', your_str)

print(your_str)

以下代码生成此输出:

Long string 1 [sucess 50]
long string 2 [apple 5 banana 20 orange 75]
long string 3 [failure: 100]

但这将是一个字符串。要获得字符串列表,您可以简单地按换行分割:

your_str.split('\n')

答案 1 :(得分:0)

In [79]: import re

In [80]: my_string = "Long string 1 [sucess 50] long string 2 [apple 5 banana 20 orange 75] long string 3 [failure: 100]"

In [81]: re.findall(r'([^\[]*\[[^\]]*\])(?: ?)', my_string)
Out[81]: 
['Long string 1 [sucess 50]',
 'long string 2 [apple 5 banana 20 orange 75]',
 'long string 3 [failure: 100]']

正则表达式的工作原理:

([^\[]*\[[^\]]*\])(?: ?)

Regular expression visualization

Debuggex Demo

详细解释:https://regex101.com/r/oS1oL8/1