有些時候需要獲得匹配正則表達式的文字內容做進一步處理。我總結了下面的代碼,可以獲得正則表達式匹配的內容。其中 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