记录第一次使用~
正则表达式的使用
正则表达式(Regular Expression)是一种用于模式匹配的强大工具,它由普通字符(例如字母、数字、符号)和特殊字符(元字符)组成。以下是使用正则表达式的一些基本概念和技巧:
- 基本概念。正则表达式中的元素由字符和元字符组成。字符是普通的计算机编码,如英文字符、数字、中文等;元字符是特殊字符,如\、*、$等,它们在正则表达式中具有特殊意义。12
- 一对一匹配。当想匹配单个字符时,可以直接使用该字符,如/a/。2
- 一对多匹配。正则表达式支持模糊匹配,使用集合、区间和通配符实现。例如,[a-z]匹配所有小写字母,[0-9]匹配所有数字。234
- 次数限定。使用限定符?、*、+、{}来设置字符重复的次数,实现长度模糊。例如,正则表达式/ab+c/表示字符b至少出现一次。1234
- 特殊字符。特殊字符如^、$、\d、\w等,在正则表达式中具有特殊意义,如^匹配行首,$匹配行尾。124
- 贪婪与懒惰匹配。正则表达式中的量词默认是贪婪的,总是尝试匹配尽可能多的字符;非贪婪模式则相反,总是尝试匹配尽可能少的字符。
/*** 正则表达式来编译一个模式,该模式可以匹配字符串中的三种可能的子串之一: "入库"、"出库" 或者 "退库"* Pattern.compile() 方法用于编译正则表达式字符串,将其转换为一个 Pattern 对象*Content中的state有,入库中,待入库,出库中,待出库,退库中,待退库,退了。不管如何组合最后输出入库/出库/退库类似字符串*/
Pattern pattern = Pattern.compile("(入库|出库|退库)");
public void sendAllMessage(List<Content> Info) {String type = Info.stream().map(Content::getState).distinct().map(n -> {Matcher matcher = pattern.matcher(n);if (matcher.find()) { // 使用 find 方法执行实际的匹配操作return matcher.group(1); // 返回匹配的内容}return ""; // 如果未找到匹配项,则返回空字符串}).filter(n -> !Objects.equals(n, "")).distinct().map(n -> Objects.equals(n, "退了") ? "退库" : n).collect(Collectors.joining("/"));}
在线测试:正则表达式在线测试 | 菜鸟工具 (jyshare.com)
参考:
正则表达式基本使用_正则表达式{}-CSDN博客
正则表达式 - JavaScript | MDN (mozilla.org)