gpt4 book ai didi

Java 正则表达式 : Optional Matching

转载 作者:行者123 更新时间:2023-12-01 22:07:10 24 4
gpt4 key购买 nike

我一直在使用以下正则表达式从一堆文本中提取邮政编码:

    "\\d{5}\\-?[1-9]?[1-9]?[1-9]?[1-9]?"

我将最后 4 个 [1-9] 设为可选(使用 ? )的目的是能够提取 5 位邮政编码和带有 + 4 的 5 位邮政编码,例如 11001-1010。

但是,即使我在末尾放置了 4 位数字,它也只匹配最后四个数字的前两位数字。

例如,在邮政编码 11001-1010 中,它将匹配 11001-10。

有人知道为什么吗?

最佳答案

简单回答问题:对于邮政编码 11001-1010,您的正则表达式仅匹配 11001-1,因为 - 后面有可选的 4 位数字> 不能为 0

对于如何解决这个问题,这取决于您是否只想匹配可选的 +4,或者您还想匹配 +3、+2、+1 和 +0,就像您的表达式一样.

将 Zip5 与可选的 +4 相匹配,例如匹配 11001-101011001:

"\\d{5}(?:-\\d{4})?"

将 Zip5 与可选的 +N 相匹配,例如匹配 11001-101011001-10111001-1011001-111001- 11001:

"\\d{5}(?:-\\d{0,4})?"

更新

现在,如果您想确保它与 123456789-123456789abcd56789-1234qwerty56789-1234 不匹配,您可以添加字边界检查:

"\\b\\d{5}(?:-\\d{4})?\\b"

关于Java 正则表达式 : Optional Matching,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32492245/

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