【问题标题】:Regex match line with string AND without another string正则表达式匹配行与字符串和没有另一个字符串
【发布时间】:2019-08-27 05:33:30
【问题描述】:

关于如何匹配不包含行的行或匹配直到字符串的问题有很多很好的答案。

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

我要查找的示例行:

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

我不想找到的示例行:

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

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

我尝试了各种方法,例如:

regex: await.*(?!Configure)

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

那么我如何告诉正则表达式解析器“匹配任何东西,但 <..>”

【问题讨论】:

标签: regex


【解决方案1】:

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

解释:

(?=^.*await) - 正向前瞻:断言以下内容是:^ 一行的开头,后跟一个或多个由于.+ 和一个单词await 引起的任何字符,简而言之:断言存在await 一行

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

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

Demo

【讨论】:

    猜你喜欢
    • 2021-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-22
    • 2022-01-17
    相关资源
    最近更新 更多