Java 如果可能,将字符串拆分为3个块(文本-数字-其他字符)
我最多需要把一个字符串分成3个块Java 如果可能,将字符串拆分为3个块(文本-数字-其他字符),java,regex,spring-boot,Java,Regex,Spring Boot,我最多需要把一个字符串分成3个块 第一个块仅用于字母 第二个是数字 第三个是剩余的 示例: Karbwqeaf 11D Jablunkovska 21/2 Tastoor Nstraat 43 Schzelkjedow Heajsd 3/5/7 m 344 Lasdasdt seavees 3., 729. tasdasd F 2. ul. Pasydufasdfa 73k/120 我需要像这样分开: Block1: Karbwqeaf Block2: 11 Block3: D Bloc
- 第一个块仅用于字母
- 第二个是数字
- 第三个是剩余的
Karbwqeaf 11D
Jablunkovska 21/2
Tastoor Nstraat 43
Schzelkjedow
Heajsd 3/5/7 m 344
Lasdasdt seavees 3., 729. tasdasd F 2.
ul. Pasydufasdfa 73k/120
我需要像这样分开:
Block1: Karbwqeaf
Block2: 11
Block3: D
Block1: Jablunkovska
Block2: 21
Block3: /2
Block1: Tastoor Nstraat
Block2: 43
Block3:
Block1: Schzelkjedow
Block2:
Block3:
Block1: Heajsd
Block2: 3
Block3: /5/7 m 344
Block1: Lasdasdt seavees 3
Block2: 3
Block3: ., 729. tasdasd F 2.
Block1: ul. Pasydufasdfa
Block2: 73
Block3: k/120
下面是我的代码,但我不知道如何才能满足我的所有要求。有什么想法吗
List<String> AllAddress = Arrays.asList("Karbwqeaf 11D", "Jablunkovska 21/2", "Tastoor Nstraat 43", "Schzelkjedow", "Heajsd 3/5/7 m 344", "Lasdasdt seavees 3., 729. tasdasd F 2.", "ul. Pasydufasdfa 73k/120");
for (String Address : AllAddress) {
String block1 = "";
String block2 = "";
String block3 = "";
Pattern pattern = Pattern.compile("(.+)\\s(\\d)(.*)");
Matcher matcher = pattern.matcher(Address);
if(matcher.matches()) {
block1 = matcher.group(1);
block2 = matcher.group(2);
block3 = matcher.group(3);
System.out.println("block1 = " + block1);
System.out.println("block2 = " + block2);
System.out.println("block3 = " + block3);
}
}
List AllAddress=Arrays.asList(“Karbwqeaf 11D”、“Jablunkovska 21/2”、“Tastoor Nstraat 43”、“Schzelkjedow”、“Heajsd 3/5/7 m 344”、“Lasdasdt seavees 3.,729.tasdasd F 2”、“ul.Pasydufasdfa 73k/120”);
for(字符串地址:AllAddress){
字符串块1=“”;
字符串块2=“”;
字符串块3=“”;
Pattern=Pattern.compile((.+)\\s(\\d)(.*);
Matcher Matcher=pattern.Matcher(地址);
if(matcher.matches()){
block1=匹配器组(1);
block2=匹配器组(2);
block3=匹配器组(3);
System.out.println(“block1=“+block1”);
System.out.println(“block2=“+block2”);
System.out.println(“block3=“+block3”);
}
}
您可以使用3个捕获组,其中第二组匹配1个或多个数字,第三组匹配任意字符0+次
^([^\d\r\n]+)(?:\h+(\d+)(.*))?$
解释
字符串的开头^
捕获组1(
匹配除换行符或数字以外的任何字符[^\d\r\n]+
关闭第一组)
非捕获组(?:
匹配1+水平空白字符\h+
在组2中捕获1个或多个数字,并在组3中捕获0个或多个字符(\d+)(.*)
关闭非捕获组并将其设置为可选)?
字符串结尾$
您可以使用3个捕获组,其中第二组匹配1个或多个数字,第三组匹配任意字符0+次
^([^\d\r\n]+)(?:\h+(\d+)(.*))?$
解释
字符串的开头^
捕获组1(
匹配除换行符或数字以外的任何字符[^\d\r\n]+
关闭第一组)
非捕获组(?:
匹配1+水平空白字符\h+
在组2中捕获1个或多个数字,并在组3中捕获0个或多个字符(\d+)(.*)
关闭非捕获组并将其设置为可选)?
字符串结尾$
([^\\d]+)\\s(\\d)?\\s?(.*)中更改正则表达式。
在([^\\d]+)\\s(\\d)?\\s?(.*)中更改正则表达式。