有些时候需要获得匹配正则表达式的文字内容做进一步处理。我总结了下面的代码,可以获得正则表达式匹配的内容。其中 RegexUtils 是正则表达式的工具类型。Main类包含main方法,演示如何使用工具类。
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;
}
}
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