Regex-匹配多个前瞻性条件



我需要找到一个正则表达式规则,它可以在项目符号之间找到换行符并将其删除。例如:

•这是一些文本

通过2个换行流到此

•这是一个由2个换行分隔的新项目符号

应该变成:

•以下是一些流向此处的文本,由2个换行符分隔

•这是一个由2个换行分隔的新项目符号

以下是我尝试过的:

•(.+)Kn+(?(?=[^•])(?=.+n+•))

我的想法是:

  1. 查找以•开头的前一行
  2. 收集一个或多个换行符之前的任何字符并丢弃。我现在已经准备好提前匹配,并根据某些条件替换换行符
  3. 向前看并检查换行后的下一个字符不是项目符号
  4. 如果是,请检查以确保在所有字符后面都有一个或多个换行符之后,还有另一个项目符号

我认为我的问题不是正确理解如何在积极的展望中将这些条件联系在一起,而是努力找到任何明确的答案/例子来处理这类问题。

一如既往,我们非常感谢您的帮助!

您可以匹配2个换行符,然后断言右边的内容不是以项目符号开头的,而是包含后面的项目符号。

^•.*Kr?nr?n(?=(?!•).*r?nr?n•)

部件内

  • ^字符串开始
  • •.*匹配项目符号和除换行符以外的任何字符0+次
  • Kr?nr?n忘记匹配的内容并匹配2个换行符
  • (?=积极前瞻,断言右边的是
    • (?!•).*否定前瞻,断言右边的不是
    • r?nr?n•匹配后面跟有的2个换行符
  • )关闭正面展望

Regex演示

如果支持R来匹配unicode换行序列,您也可以使用

^•.*KR{2}(?=(?!•).*R{2}•)

最新更新