正则表达式匹配带有字符串AND不带另一个字符串的行

时间:2019-08-27 05:33:30

标签: regex

关于如何匹配不包含行的行,或者匹配直到字符串,有很多很棒的答案。

我正在尝试将它们调整为一个正则表达式,以匹配具有特定单词且缺少特定单词的行。

我要查找的示例行:

var status = await _client.Get<Status>();

我不想找到的示例行:

await _client.GetStream().WriteAsync(bytes, 0, bytes.Length).ConfigureAwait(false);   

因此,以'await'开头但未指定'ConfigureAwait'的每一行都应该匹配。

我已经尝试过各种方法,例如:

regex: await.*(?!Configure)

但是每当我在正则表达式中使用。*之类的东西时,它就会匹配所有内容(包括ConfigureAwait部分)。

所以我如何告诉正则表达式解析器“匹配任何内容,但<...>”

1 个答案:

答案 0 :(得分:1)

尝试:(?=^.*await)(?!^.+ConfigureAwait).+

说明:

(?=^.*await)-前瞻性:断言以下内容:^行首,后跟一个或多个任何字符(由于.+和单词{{1}) },简明扼要:断言一行中有await

await-否定前瞻:与上面类似,但被否定了:)断言以下行不包含(?!^.+ConfigureAwait)

ConfigureAwait-匹配一个或多个任意字符(换行符除外)

Demo