使用正则表达式查找具有可选结尾的模式
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 演示。
我正在寻找一个正则表达式来提取一段文本,可以用可选的结尾包围。这里的挑战只是使用一个正则表达式。
输入如下:
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 演示。