wlzboy
6 天以前 09e6dc3fb7266620fafb5e341808a8eb36e080a1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
package com.ruoyi.common.utils;
 
 
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.ArrayList;
import java.util.List;
 
public class PlateNumberExtractor {
    // 省份简称正则片段
    private static final String PROVINCE_ABBRS = "京|津|沪|渝|冀|晋|辽|吉|黑|苏|浙|皖|闽|赣|鲁|豫|鄂|湘|粤|琼|川|贵|云|陕|甘|青|蒙|桂|宁|新|藏|港|澳|台";
    // 车牌号正则:省份简称 + A-Z字母 + 5-6位字母/数字(含新能源车牌)
    private static final String PLATE_REGEX = "([" + PROVINCE_ABBRS + "][A-Z][A-Z0-9]{5,6})";
    private static final Pattern PLATE_PATTERN = Pattern.compile(PLATE_REGEX);
 
    /**
     * 提取字符串中所有符合规则的车牌号
     * @param input 输入字符串
     * @return 车牌号列表(无匹配则返回空列表)
     */
    public static List<String> extractPlateNumbers(String input) {
        List<String> plateNumbers = new ArrayList<>();
        if (input == null || input.isEmpty()) {
            return plateNumbers;
        }
 
        Matcher matcher = PLATE_PATTERN.matcher(input);
        while (matcher.find()) {
            System.out.println(matcher.group(1));
            plateNumbers.add(matcher.group(1));
        }
        return plateNumbers;
    }
 
    public static String extractPlateNumber(String input) {
 
 
        Matcher matcher = PLATE_PATTERN.matcher(input);
        if (matcher.find()) {
 
            return matcher.group(1);
        }
        return "";
    }
 
//    public static void main(String[] args) {
//        String input = "xxx粤VSX120,测试京A88888,沪B123456(新能源)";
//        String plates = extractPlateNumber(input);
//        System.out.println("提取的车牌号:" + plates);
//        // 输出:[粤VSX120, 京A88888, 沪B123456]
//    }
}