我希望能够使用正则表达式将一个字符串解析为多个信息字符串。例如,我们使用一个地址:“My Street 10 90210 Beverly Hills”。我可以由此创建的字符串示例:
我的街道
– 街道名称10
– 门牌号90210
– 邮政编码比佛利山庄
– 城市
我一直在尝试创建一个供其使用的模式,但在分析字符串并剖析它时我有点迷失了。
有人可以让我开始做这个吗?
最佳答案
我会使用string.split
功能。
String s = "My Street 10 90210 Beverly Hills";
String parts[] = s.split("\\s+(?=\\d+\\s+\\d+)|(?<=\\d+)\\s+(?=[A-Z])|(?<=\\d+)\\s+(?=\\d+)");
System.out.println(Arrays.toString(parts));
输出:
[My Street, 10, 90210, Beverly Hills]
说明:
\\s+(?=\\d+\\s+\\d+)
仅当后跟一位或多位数字加上一位或多位空格加上一位或多位数字时,才匹配一个或多个空格。这样门牌号前面的空格就满足这个条件。所以它匹配了。|
称为交替运算符。(?<=\\d+)\\s+(?=[A-Z])
匹配一个或多个空格,前面有一个或多个数字,后跟一个大写字母。所以字符串city
之前的空格满足这个条件并被匹配。(?<=\\d+)\\s+(?=\\d+)
这匹配数字之间的所有空格。因此门牌号和邮政编码之间的空格是匹配的。根据匹配的空格分割输入将为您提供所需的输出。
关于java - 使用正则表达式解析地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28219214/