在具有可选结尾的特定字符串之间匹配多行文本

Matching multiline text between specific strings with an optional end

我在编写条件正则表达式时遇到问题。我需要找到带有可选结尾的多行文本。通常是“正常结束”,有时我有这个额外的后缀。

有人可以支持我解决这个问题吗?

这是我的例子:

Start of Text
 some thing in between
 some thing in between
 some thing in between
Normal end of text
Optional suffix


^(?:Start)[\d\w\s]*?(?(?=Optional.*)Optional.*|Normal.*)

它只匹配到“文本的正常结束” 即使存在“可选”。我从条件正则表达式中了解到,它应该找到“可选”并且匹配“可选”

非常感谢。

您可以使用

^(Start)((?s:.*?))(Normal.*)(\s*Optional.*)?

参见regex demo详情:

  • ^ - 字符串开头
  • (Start) - 第 1 组:Start
  • ((?s:.*?)) - 第 2 组:尽可能少的任何零个或多个字符
  • (Normal.*) - 第 3 组:Normal 然后除换行符之外的任何零个或多个字符尽可能少
  • (\s*Optional.*)? - 一个可选的第 4 组匹配零个或多个空格,Optional 然后除换行符之外的任何零个或多个字符尽可能少。