【问题标题】:How to "match if there is one occurrence but don't match if the pattern appears multiple times" in regular expression如何在正则表达式中“如果出现一次则匹配但如果模式出现多次则不匹配”
【发布时间】:2021-07-09 01:12:35
【问题描述】:

我正在尝试匹配格式为 XXXX-NNNO 的字符串

X:大写字符

N:整数

O:可选的大写字符

例如

ABCD-111The => ABCD-111

ABCD-111 => ABCD-111

ABCD-111A => ABCD-111A

我写了正则表达式 [A-Z]{4}-\d{3}[A-Z]? 但它还包括第一个示例中的“T”,我不想这样做,我也尝试过

[A-Z]{4}-\d{3}(?=[A-Za-z\s]) 正确匹配第一个不匹配另一个。如何编写一个匹配当且仅当它仅以特定模式重复一次而终止的正则表达式

【问题讨论】:

    标签: python regex regex-lookarounds


    【解决方案1】:

    以下正则表达式应该可以工作

    [A-Z]{4}-\d{3}(?:[A-Z]\b)?
    

    结尾(?:[A-Z]\b)? 匹配最后一个大写字符只有如果它紧跟在单词边界(单词的结尾)之后

    【讨论】:

      猜你喜欢
      • 2015-09-19
      • 2012-02-24
      • 2016-03-18
      • 1970-01-01
      • 1970-01-01
      • 2015-09-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多