首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python使用regex将段落与多个换行符相匹配。

Python使用regex将段落与多个换行符相匹配。
EN

Stack Overflow用户
提问于 2019-09-07 14:00:34
回答 1查看 164关注 0票数 1

我试着用Python和Re来匹配段落。

文本的一个例子:

Lorem ipsum dolor,consetetur sadipscing elitr,sed diam非ut eirmod tempor sed dolore magna aliquyam erat,et diam voluptua。在vero eos等人的案件中,由dolores和ea rebum组成。 两个或更多行在这里中断, 没有海洋的圣洁,也没有同样的位置。 两个或更多行在这里中断, Ipsum dolor,consetetur sadipscing elitr,sed diam非ut eirmod d tempor sed dolore magna aliquyam erat,sed diam voluptua。在vero eos等人的案件中,由dolores和ea rebum组成。没有海洋的圣洁,也没有同样的位置。

这一表达似乎几乎做到了这一点:

代码语言:javascript
复制
paragraphs = re.findall(r'(?s)((?:[^\n][\n]?)+)', textContent)

但我想确保只有当有两个或更多的分界点时才能匹配。目前它匹配得太频繁了。

编辑:

代码语言:javascript
复制
ART. WEFWEFEW
  1 SDVSDRG: **<at the momemnt it breaks here, but it shouldnt>**
     a. wevvdfvdfd
     b. sdfsdfsdfsdfsdfsdghtrhrth

Edit2:

代码语言:javascript
复制
ART. WEFWEFEW
   1 SDVSDRG: 
      **here are two line-breaks, but dont split this paragraph**
      **at the momemnt it breaks here, but it shouldnt**
     a. wevvdfvdfd
     b. sdfsdfsdfsdfsdfsdghtrhrth
EN

回答 1

Stack Overflow用户

发布于 2019-09-07 17:55:35

查看这个regex (?m)(?:.+(?:\n.)?)+ on RegEx101,在这里您也可以得到它的解释。

使用此regex的Python代码示例:

代码语言:javascript
复制
import re
import pprint

textContent = '''Lorem ipsum dolor sit amet, consetetur sadipscing elitr,
sed diam nonumy eirmod tempor invidunt ut labore et dolore
magna aliquyam erat, sed diam voluptua. At vero eos et
accusam et justo duo dolores et ea rebum.

Stet clita kasd gubergren, no sea takimata sanctus est Lorem
ipsum dolor sit amet.


Ipsum dolor sit amet, consetetur sadipscing elitr, sed diam
nonumy eirmod tempor invidunt ut labore et dolore magna
aliquyam erat, sed diam voluptua. At vero eos et accusam et
justo duo dolores et ea rebum. Stet clita kasd gubergren, no
sea takimata sanctus est Lorem ipsum dolor sit amet.



ART. WEFWEFEW
  1 SDVSDRG:
     a. wevvdfvdfd
     b. sdfsdfsdfsdfsdfsdghtrhrth'''

pprint.pprint(re.findall(r'(?m)(?:.+(?:\n.)?)+', textContent))

输出:

代码语言:javascript
复制
['Lorem ipsum dolor sit amet, consetetur sadipscing elitr,\n'
 'sed diam nonumy eirmod tempor invidunt ut labore et dolore\n'
 'magna aliquyam erat, sed diam voluptua. At vero eos et\n'
 'accusam et justo duo dolores et ea rebum.',
 'Stet clita kasd gubergren, no sea takimata sanctus est Lorem\n'
 'ipsum dolor sit amet.',
 'Ipsum dolor sit amet, consetetur sadipscing elitr, sed diam\n'
 'nonumy eirmod tempor invidunt ut labore et dolore magna\n'
 'aliquyam erat, sed diam voluptua. At vero eos et accusam et\n'
 'justo duo dolores et ea rebum. Stet clita kasd gubergren, no\n'
 'sea takimata sanctus est Lorem ipsum dolor sit amet.',
 'ART. WEFWEFEW\n'
 '  1 SDVSDRG:\n'
 '     a. wevvdfvdfd\n'
 '     b. sdfsdfsdfsdfsdfsdghtrhrth']

雷克斯试验器上演示。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57834383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档