gpt4 book ai didi

c# - 具有量化部分和负向前瞻的正则表达式

转载 作者:行者123 更新时间:2023-11-30 21:39:00 25 4
gpt4 key购买 nike

我需要检查字符串是否包含以下模式:以“A”开头,后跟零个或多个空格,然后是除“B”以外的任何内容。

因此,以下内容必须匹配:"A"“AX”“A X”“A”“A XB”

以下字符串不得匹配:"AB""A B"

我天真的尝试是A\s*(?!B),但它与不需要的“A B”匹配。

最佳答案

如果你只需要判断 true 或 false,你可以将 \s* 放入前瞻中:

Regex.IsMatch(s, @"A(?!\s*B)")

它发现 A 没有 0+ 空格,后面跟着 B

请参阅regex demo .

在您的模式中,A\s*(?!B),可以在任何 0+ 空格之后执行负向前瞻,并且一旦空格后面没有 B 被发现,则返回有效匹配(这是由于 \s* 量化模式可能导致的回溯而发生的)。

如果您需要实际匹配 A 及其后面的空格,但如果这些空格后面没有 B,请使用我评论中的模式。

(?>A\s*)(?!B)

此模式匹配:

  • (?>A\s*) - 一个原子组,匹配 A,然后是 0+ 空格,不回溯到组模式 允许
  • (?!B) - 空格后没有 B,否则整个匹配失败。

关于c# - 具有量化部分和负向前瞻的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45463437/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com