gpt4 book ai didi

java - 如何使用正则表达式java从字符串中提取第一个字母和后面的三个数字

转载 作者:行者123 更新时间:2023-12-04 07:47:56 29 4
gpt4 key购买 nike

我有像这样的字符串
S103 FYUN031800644100
5 S103 LKAAN031801261400
32 S103 AKJA031804534600
从上面的字符串中,我必须使用正则表达式从上面的每个字符串中提取粗体部分,有人知道如何去做吗?
到目前为止,我已经尝试过这个

String acc = "S103L5AN031801261400";
String regex = ".*S(.{3})";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(acc);
while(matcher.find()){
Logger.debug("Match:", matcher.group());
}
但是,我仍然无法正确处理。

最佳答案

您可以使用正则表达式,[A-Za-z]\\d{3}这意味着一个字母后跟 3 位数字。
如果您希望子字符串以 S 开头或 s仅使用 [Ss]\d{3}(?i)s\\d{3}反而。请注意 (?i)使模式不区分大小写。
如果您希望子字符串以 S 开头仅使用 S\d{3}反而。

import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Stream;

public class Main {
public static void main(String[] args) {
Stream.of(
"S103FYUN031800644100",
"5S103LKAAN031801261400",
"32S103AKJA031804534600"
).forEach(s -> System.out.println(s + " => " + getSubstr(s)));
}

static String getSubstr(String s) {
Matcher matcher=Pattern.compile("[A-Za-z]\\d{3}").matcher(s);
String substr="";
if(matcher.find()) {
substr = matcher.group();
}
return substr;
}
}
输出:
S103FYUN031800644100 => S103
5S103LKAAN031801261400 => S103
32S103AKJA031804534600 => S103

关于java - 如何使用正则表达式java从字符串中提取第一个字母和后面的三个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67124203/

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