|
|
|
@ -12,11 +12,26 @@ import java.util.regex.Matcher;
|
|
|
|
|
import java.util.regex.Pattern;
|
|
|
|
|
|
|
|
|
|
public class TestRegex {
|
|
|
|
|
/**
|
|
|
|
|
* 查看一个字符串是否可以转换为数字
|
|
|
|
|
*
|
|
|
|
|
* @param str 字符串
|
|
|
|
|
* @return true 可以; false 不可以
|
|
|
|
|
*/
|
|
|
|
|
public static boolean isStr2Num(String str) {
|
|
|
|
|
try {
|
|
|
|
|
Integer.parseInt(str);
|
|
|
|
|
return true;
|
|
|
|
|
} catch (NumberFormatException e) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static void main(String[] args) {
|
|
|
|
|
//按输入顺序进行正则匹配
|
|
|
|
|
List<String> regExp = new ArrayList<>();
|
|
|
|
|
regExp.add("(.*?)\\((\\d+)元/年;(.*)\\)");
|
|
|
|
|
regExp.add("(.*?)\\(学费待定;(.*)\\)");
|
|
|
|
|
regExp.add("(.*?)\\((\\d+)元/年\\)");
|
|
|
|
|
|
|
|
|
|
//模拟需要处理的串
|
|
|
|
@ -27,20 +42,32 @@ public class TestRegex {
|
|
|
|
|
String str1 = IoUtil.read(byteArrayInputStream, CharsetUtil.UTF_8);
|
|
|
|
|
String[] txtArray = str1.split("\r\n");
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < txtArray.length; i++) {
|
|
|
|
|
for (int i = 0; i < Math.min(350,txtArray.length); i++) {
|
|
|
|
|
String str = txtArray[i];
|
|
|
|
|
System.out.println("第" + (i + 1) + "行:");
|
|
|
|
|
boolean flag = false;
|
|
|
|
|
for (int j = 0; j < regExp.size(); j++) {
|
|
|
|
|
String r1 = regExp.get(j);
|
|
|
|
|
Pattern pattern = Pattern.compile(r1);
|
|
|
|
|
Matcher matcher = pattern.matcher(str);
|
|
|
|
|
if (matcher.find()) {
|
|
|
|
|
System.out.println("匹配成功!");
|
|
|
|
|
flag = true;
|
|
|
|
|
System.out.println("专业名称:" + matcher.group(1));
|
|
|
|
|
System.out.println("学费:" + matcher.group(2));
|
|
|
|
|
if (matcher.groupCount() >= 3) System.out.println("其他要求:" + matcher.group(3));
|
|
|
|
|
if (isStr2Num(matcher.group(2).toString())) {
|
|
|
|
|
System.out.println("学费:" + matcher.group(2));
|
|
|
|
|
if (matcher.groupCount() >= 3) System.out.println("描述:" + matcher.group(3));
|
|
|
|
|
} else {
|
|
|
|
|
System.out.println("学费:学费待定");
|
|
|
|
|
if (matcher.groupCount() >= 2) System.out.println("描述:" + matcher.group(2));
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (!flag) {
|
|
|
|
|
System.out.println("有一个文本无法匹配现有正则规则,需要人工处理!");
|
|
|
|
|
System.out.println(str);
|
|
|
|
|
}
|
|
|
|
|
System.out.println("=======================================================");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|