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]
|
// }
|
}
|