All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.xiaoyuge5201.other.RegexUtils Maven / Gradle / Ivy

There is a newer version: 1.3.5
Show newest version
package com.github.xiaoyuge5201.other;

import java.util.Collection;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 正则相关工具类
 *
 * @author 路小磊 [email protected]
 */
public class RegexUtils {

    private RegexUtils() {
        //阻止实例化
    }

    /**
     * 获得匹配的字符串
     *
     * @param regex      匹配的正则
     * @param content    被匹配的内容
     * @param groupIndex 匹配正则的分组序号
     * @return 匹配后得到的字符串,未匹配返回null
     */
    public static String get(String regex, String content, int groupIndex) {
        Matcher matcher = Pattern.compile(regex, Pattern.MULTILINE).matcher(content);
        if (matcher.find()) {
            return matcher.group(groupIndex);
        }
        return null;
    }

    /**
     * 删除匹配的内容
     *
     * @param regex   正则
     * @param content 被匹配的内容
     * @return 删除后剩余的内容
     */
    public static String delFirst(String regex, String content) {
        return content.replaceFirst(regex, "");
    }

    /**
     * 删除正则匹配到的内容之前的字符 如果没有找到,则返回原文
     *
     * @param regex   定位正则
     * @param content 被查找的内容
     * @return 删除前缀后的新内容
     */
    public static String delPreLocation(String regex, String content) {
        Matcher matcher = Pattern.compile(regex, Pattern.MULTILINE).matcher(content);
        if (matcher.find()) {
            return content.substring(matcher.end());
        }
        return content;
    }

    /**
     * 取得内容中匹配的所有结果
     *
     * @param regex      正则
     * @param content    被查找的内容
     * @param group      正则的分组
     * @param collection 返回的集合类型
     * @return 结果集
     */
    @Deprecated
    public static > T gets(String regex, String content, int group, T collection) {
        while (true) {
            String result = get(regex, content, group);
            if (result == null) break;
            collection.add(result);
            content = delPreLocation(regex, content);
        }
        return collection;
    }

    /**
     * 取得内容中匹配的所有结果
     *
     * @param regex      正则
     * @param content    被查找的内容
     * @param group      正则的分组
     * @param collection 返回的集合类型
     * @return 结果集
     */
    public static > T findAll(String regex, String content, int group, T collection) {
        Matcher matcher = Pattern.compile(regex, Pattern.MULTILINE).matcher(content);
        while (matcher.find()) {
            collection.add(matcher.group(group));
        }
        return collection;
    }

    /**
     * 从字符串中获得第一个整数
     *
     * @param StringWithNumber 带数字的字符串
     * @return 整数
     */
    public static int getFirstNumber(String StringWithNumber) {
        return Integer.parseInt(get("\\d+", StringWithNumber, 0));
    }

    /**
     * 判断该字符串是否是IPV4地址
     *
     * @param ip IP地址
     * @return 是否是IPV4
     */
    public static boolean isIpv4(String ip) {
        if (LangUtil.isEmpty(ip)) {
            return false;
        }
        String regex = "\\b((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\b";
        return Pattern.matches(regex, ip);
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy