【141】Java獲得正則表達式匹配的內容

有些時候需要獲得匹配正則表達式的文字內容做進一步處理。我總結了下面的代碼,可以獲得正則表達式匹配的內容。其中 RegexUtils 是正則表達式的工具類型。Main類包含main方法,演示如何使用工具類。

RegexUtils.java

package blog141;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 正則表達式工具類
 * @author zhangchao
 */
public final class RegexUtils {
    /**
     * 獲得匹配正則表達式的內容
     * @param str 字符串
     * @param reg 正則表達式
     * @param isCaseInsensitive 是否忽略大小寫,true忽略大小寫,false大小寫敏感
     * @return 匹配正則表達式的字符串,組成的List
     */
    public static List<String> getMatchList(final String str, final String reg, final boolean isCaseInsensitive) {
        ArrayList<String> result = new ArrayList<String>();
        Pattern pattern = null;
        if (isCaseInsensitive) {
            //編譯正則表達式,忽略大小寫
            pattern = Pattern.compile(reg, Pattern.CASE_INSENSITIVE);
        } else {
            //編譯正則表達式,大小寫敏感
            pattern = Pattern.compile(reg);
        }
        Matcher matcher = pattern.matcher(str);// 指定要匹配的字符串
        while (matcher.find()) { //此處find()每次被調用後,會偏移到下一個匹配
            result.add(matcher.group());//獲取當前匹配的值
        }
        result.trimToSize();
        return result;
    }
}

Main.java

package blog141;

import java.util.List;

/**
 * @author zhangchao
 */
public class Main {

    public static void main(String[] args) {
        List<String> list = RegexUtils.getMatchList("aaa2343298AAA33333", "aaa", true);
        for (String str : list) {
            System.out.print(str + "  ");
        }
        System.out.println();
        List<String> list2 = RegexUtils.getMatchList("aaa2343298AAA33333", "aaa", false);
        for (String str : list2) {
            System.out.print(str + "  ");
        }
        System.out.println();
    }
}

結果如下:

aaa  AAA  
aaa  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章