正则表达式将连字符排除为捕获的右端点(VB.NET)

时间:2015-08-11 18:12:28

标签: regex vb.net match

我有以下字符串(在vb.net中):

22nd Jan 1985 11:00

我希望regex.match()的输出如下所示:

Dim data as String = "-- Compiled: Aug  6 2015 10:07:08 --\nanotherline--\n..."

我正在尝试各种变体:

Aug  6 2015 10:07:08

但我能输出的最好的是:

Regex.Match(data, "(?<=Compiled:\s)(.*)(?<!-)", RegexOptions.IgnoreCase).ToString

如何让正则表达式确认连字符(“破折号”)字符以停止匹配?

提前谢谢!

3 个答案:

答案 0 :(得分:2)

你需要使用非贪婪的正则表达式的正向前瞻。

Regex.Match(data, "(?<=Compiled:\s).*?(?=\s*-)", RegexOptions.IgnoreCase).ToString

DEMO

答案 1 :(得分:1)

您不需要在RHS使用lookbehind,只需使用mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);模式:

negation

RegEx Demo

答案 2 :(得分:1)

(?<=Compiled:\s)(.*?)(?=-{2})

使用lookahead代替。请参阅演示。

https://regex101.com/r/eX9gK2/9