使用正则表达式查找具有可选结尾的模式

Finding a pattern with optional end using regular expression

我正在寻找一个正则表达式来提取一段文本,可以用可选的结尾包围。这里的挑战只是使用一个正则表达式。

输入如下:

Anchor:  This is the text I want to extract          A/C  : 2015-5-20
Anchor:  This is the text I want to extract        

我目前正在使用以下正则表达式

Anchor:(?<extact>.*)(A\/C)

结果如下:

如果我将 A/C 块设为可选,Anchor:(?<extact>.*)(A\/C)? 使用 ? 匹配会变得很长:

看起来如下:

关于如何使用单个正则表达式优雅地解决此问题的任何想法。另一个约束是我想在正则表达式中有一个命名块,(这里 extact

您可以在 regex101 上找到示例代码:https://regex101.com/r/wH5iQ4/1

Anchor:(?<extact>.*?)\s*(?=A\/C|$)

您可以使用 lookahead here.See 演示。

https://regex101.com/r/wH5iQ4/3