gpt4 book ai didi

.net - 仅当最后一组恰好为 n 个字符长时才匹配正则表达式

转载 作者:行者123 更新时间:2023-12-02 08:36:04 24 4
gpt4 key购买 nike

我正在尝试创建一个匹配模式的正则表达式,但如果最后一组的长度不正好是 4 个字符,则不匹配。

例子:
正则表达式:(.{1,}-)(.{1,}-)(.{1,}-)(\d{4,4})
输入良好:A-AAAA-A-0001
输入错误:A-AAAA-A-00011

我的正则表达式失败了,它从两个输入中获取 A-AAAA-A-0001

最佳答案

下面的正则表达式将从一个字符串内部获取匹配项(即它会找到匹配的子字符串):

(?<=\s|^)([^\s]+-){3}(\d{4})(?=\s|$)

以下将只匹配整个字符串

^([^\s]+-){3}(\d{4})$

我稍微简化了您的正则表达式,但假设您没有将每组字符用于某事。

我把你的:

(.{1,}-)(.{1,}-)(.{1,}-)

进入

([^\s]+-){3}

表示“匹配任何非空格且以破折号结尾的内容正好匹配 3 次。‘+’运算符是表示 {1,] 或“至少一次”的简写。

我们可以更具体一点吗?

我怀疑您可能只想匹配字母数字值。例如,我怀疑 $-A%^A-@-0001是您的有效匹配项。如果我对此是正确的,您将需要使用速记字符类,这将使您的正则表达式看起来像这样(我假设您的正则表达式区分大小写):

匹配子串:

(?<=\s|^)([A-Za-z\d]+-){3}(\d{4})(?=\s|$)

匹配整个字符串:

^([A-Za-z\d]+-){3}(\d{4})$

一些提示:

  • 而不是指定 {4,4}要说“恰好 4 次”,只需使用 {4}
  • 而不是指定 {1,}要说“1 次或多次”,只需使用 +
  • (?={regex in here})意思是,在字符串中向前看并匹配以下内容,但不要将其添加到我的结果中(这称为积极向前看)
  • (?<={regex in here})意思是,在字符串中向后看并匹配以下内容,但不要将其添加到我的结果中(这称为积极向后看)
  • 也有相反的负面环视,但我会把它留给您去研究。

关于.net - 仅当最后一组恰好为 n 个字符长时才匹配正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21272854/

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