gpt4 book ai didi

正则表达式如何匹配可选字符

转载 作者:行者123 更新时间:2023-12-03 04:32:30 26 4
gpt4 key购买 nike

我有一个正则表达式,我认为到目前为止它工作正常。我需要匹配一个可选字符。它可能存在,也可能不存在。

这里有两个字符串。上面的字符串匹配,而下面的字符串不匹配。下部字符串中缺少单个字母是导致其失败的原因。

我想获取起始 5 位数字之后的单个字母(如果存在),如果不存在,则继续获取字符串的其余部分。该字母可以是 A-Z

如果我删除 ([A-Z]{1}) +.*? + 来自正则表达式,它将匹配我需要的所有内容,除了字母,但这很重要。

20000      K               Q511195DREWBT            E00078748521
30000 K601220PLOPOH Z00054878524

这是我正在使用的正则表达式。

/^([0-9]{5})+.*? ([A-Z]{1}) +.*? +([A-Z]{1})([0-9]{3})([0-9]{3})([A-Z]{3})([A-Z]{3}) +([A-Z])[0-9]{3}([0-9]{4})([0-9]{2})([0-9]{2})/

最佳答案

使用

[A-Z]?

使字母可选。 {1} 是多余的。 (当然,您也可以编写 [A-Z]{0,1} ,其含义相同,但这就是 ? 的用途。)

您可以改进您的正则表达式

^([0-9]{5})+\s+([A-Z]?)\s+([A-Z])([0-9]{3})([0-9]{3})([A-Z]{3})([A-Z]{3})\s+([A-Z])[0-9]{3}([0-9]{4})([0-9]{2})([0-9]{2})

并且,由于在大多数正则表达式方言中,\d[0-9] 相同:

^(\d{5})+\s+([A-Z]?)\s+([A-Z])(\d{3})(\d{3})([A-Z]{3})([A-Z]{3})\s+([A-Z])\d{3}(\d{4})(\d{2})(\d{2})

但是:您真的需要 11 个独立的捕获组吗?如果是这样,为什么不捕获倒数第四组数字呢?

关于正则表达式如何匹配可选字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4007302/

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