使用python支持多个空格的正则表达式

时间:2015-10-14 01:15:13

标签: python regex

我有一个示例数据如下:

(1) fshfonlpjspfmnfmnsjoide                    (2)dfljslmnljoifsjdjmfdsjf
foslndlknjhoihfodsiolnlnlkdfshoipfjhndfs  subsection (3):wdjoinfeiu
(3)fwshfnlfgnoiuhwsoiuheoklnfsojoihoisnf
          (i)fdfssd
          (ii)flshf
   (4)fjdspfj;mf;jspiojepjasm;lfmsdjipoj

对于上面的示例,我想在我收到段落起始编号的每个点打破数据,例如(1),(2),(3)等模式

但是我不想像第(3)款那样突破,这不是一个真正的新段落。

我使用了正则表达式:pattern_string = "(\n|\s\s\s\s\s\s\s)\(\d+\)"

当新段落在(1)这样的新行中开始时它工作正常但在段落不从新行开始时不起作用,例如(2)以上样本。 或者如果在新行中的模式之前有一个空格,例如(4)在它之前有一个空格。

1 个答案:

答案 0 :(得分:0)

尝试使用重复(对于正则表达式,使用原始(r'...')字符串也是一种好习惯:

r"(^|\n\s*|\s{7,})\((\d+)\)"

这应匹配

处的数字
  1. 字符串的开头:^
  2. 新行,即使有空格:\n\s*
  3. 几个空格(至少7个)后:\s{7,}
  4. 示例:

    >>> re.split(r"(?:^|\n\s*|\s{7,})\(\d+\)", your_text)
    
    ['',
     ' fshfonlpjspfmnfmnsjoide',
     'dfljslmnljoifsjdjmfdsjf\nfoslndlknjhoihfodsiolnlnlkdfshoipfjhndfs  subsection (3):wdjoinfeiu',
     'fwshfnlfgnoiuhwsoiuheoklnfsojoihoisnf\n          (i)fdfssd\n          (ii)flshf',
     'fjdspfj;mf;jspiojepjasm;lfmsdjipoj']
    

    只需删除第一个空字符串,即可获得所有4个部分