【问题标题】:Find any line that starts with this and doesn't contain that查找以 this 开头且不包含 that 的任何行
【发布时间】:2023-04-06 20:39:01
【问题描述】:

如何找到以abc 开头并且在字符串的其余部分没有单词test 的任何字符串?

abc blah test (no match)
abc blah blah test (no match)
abc blah (match)

我找到了以下内容,但我不知道如何放入 abc 部分。

^(?!.*Test).*$

信用:https://stackoverflow.com/a/1318314/139698

【问题讨论】:

  • 你可以使用(?i)^abc(?!.*\bTest\b).*$regex101.com/r/Y7zhR9/1
  • var result = words.Where(word => word.StartsWith("abc") && word.Contains("test")).ToList();
  • 你不把abc放在起始字符('^')之后吗?
  • @RufusL .Contains() 可能是个好主意。我只想指出,如果 OP 想要拒绝“测试”而不是“测试”,这将是行不通的,这很可能就是这种情况。
  • @Thefourthbird 谢谢,如果你把它写成答案,我会标记它。

标签: c# regex


【解决方案1】:

您可以使用例如内联修饰符(?i) 使匹配不区分大小写,并在test 周围和abc 之后使用字边界\b 以防止部分匹配。

先匹配 abc,然后使用断言。

(?i)^abc\b(?!.*\bTest\b).*$

.Net regex demo

【讨论】:

    猜你喜欢
    • 2011-05-23
    • 2019-10-15
    • 1970-01-01
    • 1970-01-01
    • 2020-05-11
    • 2020-10-14
    • 1970-01-01
    • 1970-01-01
    • 2012-11-29
    相关资源
    最近更新 更多