gpt4 book ai didi

java - 我可以将这个 "range string"与正则表达式匹配吗?

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

我正在尝试设置一个送货区域映射方法,该方法采用邮政编码(澳大利亚)并将其与一组送货区域进行匹配。

区域定义是一个文本 block ,如下所示:

4124-4125、4133、4211、4270、4272、4275、4280、4285、4287、4307-4499、4510、4512、4515-4519、4522-4899

因此有两种类型:单独的邮政编码或要匹配的邮政编码范围。我已经实现了正则表达式来匹配各个项目(在java中):
字符串 regex3 = ".*,?\\s?"+邮政编码 + "\\s?,?.*";

但我想知道匹配范围记录的最佳方法是什么。例如,输入 4308 应与范围定义 4307-4499 匹配。我怀疑可能有必要使用正则表达式解析所有范围定义,然后将输入与每个定义进行匹配。谁能建议一个更快的方法?

最佳答案

此表达式将获取所有邮政编码

((\\d{4})(-\\d{4})?)+

所以它将匹配 4343 和 4543-9987

编辑

好吧,这个怎么样,看看这是否有意义

public static void main(String[] args) {

String postalCodeString = "4124-4125, 4133,4211,4270,4272,4275,4280,4285,4287,4307-4499,4510,4512,4515-4519,4522-4899";

int userInput = Integer.parseInt("4308");

String [] postalArray = postalCodeString .split(",");

for (String post : postalArray )
{

if(h.contains("-"))
{
String [] range = post.trim().split("-");
int low = Integer.parseInt(range[0]);
int high = Integer.parseInt(range[1]);

if(userInput<=high && userInput>=low)
System.out.println("Found in range "+h);
}
else
{
int pcode = Integer.parseInt(post.trim());

if(userInput==pcode)
System.out.println("Found in postal code "+pcode);
}
}


}

打印出来

Found in range 4307-4499

这是您要找的吗?

关于java - 我可以将这个 "range string"与正则表达式匹配吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33644508/

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