在具有可选结尾的特定字符串之间匹配多行文本
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
然后除换行符之外的任何零个或多个字符尽可能少。
我在编写条件正则表达式时遇到问题。我需要找到带有可选结尾的多行文本。通常是“正常结束”,有时我有这个额外的后缀。
有人可以支持我解决这个问题吗?
这是我的例子:
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
然后除换行符之外的任何零个或多个字符尽可能少。