正则表达式:匹配直到与工作流应用程序进行下一次匹配

Regex: Match until next match with Workflow app

我正在尝试使用 Workflow iOS 应用来分离和处理如下文本:

Page 1, Highlight (Yellow):
  Content: "blah blah blah"

  "blah blah blah"

Page 111, Highlight (Yellow):
  Content: "more blah"

Page 524, Note (Yellow):
  Blah blah

  Blah blah Blah

Page 6, Highlight (Yellow):
  Content: "blah"

我想按页码分隔每个文本块,这样上面的内容将产生 4 个文本块。我想不出 "split text" 的方法,因为我不能使用换行符或特定字符。

iOS 上的工作流有一个功能,您可以在其中通过正则表达式进行分组。这似乎行得通。我可以编写一个获取 "Page 1" 的正则表达式,但我不知道如何将匹配扩展到下一个 "Page XXX" 实例。我想也许是这样的,但它不起作用:

(Page)+ \w*[\s\S]*(?=\n.*?Page)

希望得到任何提示或指导。


编辑:根据 this reddit thread,工作流程需要 ICU 正则表达式语法。这应该对其他人有帮助。

这就是答案:

(?sm)^Page.*?(?=^Page|\Z)

This should do the trick

(?s)^Page.*?(?=^Page|\Z)

(?s) 使得 . 将匹配新行字符

然后它查找以 "Page" 开头的字符串并捕获所有内容,直到以 "Page" 开头的下一行或最后一条记录。