【发布时间】:2015-09-02 08:37:20
【问题描述】:
我正在寻找一个正则表达式来提取一段文本,该文本块可以用可选的结尾包围。这里的挑战只是使用一个正则表达式。
输入如下:
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
【问题讨论】:
-
您能否也发布您正在寻找的确切匹配项?我的意思是首选输出。我不确定我是否完全理解您在这里想要实现的目标。
-
A/C前面的空格是否一致? -
A/C前的空格不一致,但也不相关。我的意图是提取从
Anchor:到A/C或直到行尾的所有内容(包括空格) -
为什么不直接使用捕获的文本 1?就性能而言,环视总是更昂贵。使用
Anchor:(?<extact>.*?)(\s*A\/C)并获取第 1 组文本。确实,这不是您必须使用环视的情况。
标签: regex match string-matching