Java 正则表达式 匹配中文
在处理中,使用SpringEl进行日期计算,会碰到key是中文的情况,要先进行匹配中文:
语法:
中文 \u4e00-\u9fa5
匹配中文
要求:
如何把
{"formula": "(#处理完成时间-#开始处理时间+#dealTime)/(1000)"}
提取处理完成时间、开始处理时间和dealTime
代码:
public static void main(String[] args) {
String content = "\"formula\": \"(#处理完成时间-#开始处理时间+#dealTime
)/(1000)\"";
List<String> matchWord = getMatchWord(content);
System.out.println(matchWord);
}
/**
* 正则表达式 查找匹配formula公式里面的字段
* @param content 内容
* @return list字符集
*/
public static List<String> getMatchWord(String content) {
List<String> strList = new ArrayList<>();
String pattern = "#([a-zA-Z0-9_\\u4e00-\\u9fa5]+)"; // 英文数字中文
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(content);
while (m.find()) {
strList.add(m.group(1));
}
return ListUtils.emptyIfNull(strList).stream().distinct().collect(Collectors.toList());
}
结果:
[处理完成时间, 开始处理时间, dealTime]
获取到对应的字段,再重新赋英文的名字,这样才能使用SpringEl进行计算。
总结:
匹配中文,主要就是知道其语法,这个是固定的,怎么推敲写,就没法子了。