【问题标题】:How to make a regex negative lookahead stop?如何使正则表达式负前瞻停止?
【发布时间】:2023-02-22 17:01:54
【问题描述】:

我想用以下条件匹配一个字符串

  • 必须以A开头
  • 后跟任何数字,除非是大写字母
  • 后跟一个数字(应该被捕获)

A bcd 1 应该匹配并捕获 1

Abcd1 应该匹配并捕获 1

A bcd不应该匹配,因为没有号码

A bCd 1 不应该匹配,因为 A 和数字之间有一个大写字母 C

A bcd 1 B 应该匹配,因为 1 在 B 之前

我想出了

A(?!.*[A-Z])+?.*(\d+)

但这不适用于最后一个用例,因为负面前瞻超出了1

这里是游乐场https://regex101.com/r/1zRCrp/1

【问题讨论】:

    标签: regex regex-lookarounds


    【解决方案1】:

    您可以使用

    A[^A-Z0-9]*(d+)
    

    请参阅regex demo

    细节:

    • A - 一封A
    • [^A-Z0-9]* - 大写 ASCII 字母和数字以外的零个或多个字符
    • (d+) - 第 1 组:一个或多个数字。

    【讨论】:

      猜你喜欢
      • 2021-10-11
      • 2011-10-14
      • 2010-12-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多