7.SpringEL使用正则表达式

SpringEL使用正则表达式

文章目录

  • SpringEL使用正则表达式
    • 介绍
    • Spring EL以注解的形式
    • Spring EL以XML的形式

介绍

Spring Expression Language (SpEL) 中可以使用正则表达式进行模式匹配。以下是一个使用SpEL和正则表达式的案例:

假设我们有一个字符串列表,我们想要找到与指定正则表达式匹配的所有字符串。

首先,创建一个字符串列表:

List<String> strings = Arrays.asList("foo", "bar", "baz", "foobar", "bazfoo");

然后,我们可以使用 matches 方法来检查字符串是否与正则表达式匹配:

String pattern = "foo.*"; // 正则表达式,"foo" 后面的任意字符
List<String> matchingStrings = strings.stream().filter(s -> s.matches(pattern)).collect(Collectors.toList());

在这个例子中,我们创建了一个字符串流,然后使用 filter 方法和一个 lambda 表达式来应用正则表达式匹配。匹配的字符串会被收集到一个新的列表中。

注意,这个例子使用了Java 8的流(Stream)API,如果你使用的是更早的Java版本,你可能需要使用传统的循环来遍历列表并进行过滤。

你也可以用SpEL的 eval 方法直接在表达式的上下文中进行匹配:

String expression = "strings[0] matches 'foo.*'";
ExpressionParser parser = new SpelExpressionParser();
boolean matches = (boolean) parser.parseExpression(expression).getValue(strings);

在这个例子中,我们创建了一个 ExpressionParser 对象,然后使用它来解析和执行表达式。这个表达式检查第一个字符串是否匹配指定的正则表达式,然后将结果转换为布尔值。

Spring EL支持正则表达式,可使用一个简单的关键词“matches”。如下实例

@Value("#{'100' matches '\\d+' }")
private boolean isDigit;

它测试’100’是否是通过正则表达式‘\d+‘测试过的一个有效的数字。

Spring EL以注解的形式

package com.yiibai.core;import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;@Component("customerBean")
public class Customer {// email regular expressionString emailRegEx = "^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)" +"*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";// if this is a digit?@Value("#{'100' matches '\\d+' }")private boolean validDigit;// if this is a digit + ternary operator@Value("#{ ('100' matches '\\d+') == true ? " +"'yes this is digit' : 'No this is not a digit'  }")private String msg;// if this emailBean.emailAddress contains a valid email address?@Value("#{emailBean.emailAddress matches customerBean.emailRegEx}")private boolean validEmail;//getter and setter methods, and constructor	
}
package com.yiibai.core;import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;@Component("emailBean")
public class Email {@Value("admin@yiibai.com")String emailAddress;//...
}

输出

Customer [isDigit=true, msg=yes this is digit, isValidEmail=true]

Spring EL以XML的形式

<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsd"><bean id="customerBean" class="com.yiibai.core.Customer"><property name="validDigit" value="#{'100' matches '\d+' }" /><property name="msg"value="#{ ('100' matches '\d+') == true ? 'yes this is digit' : 'No this is not a digit'  }" /><property name="validEmail"value="#{emailBean.emailAddress matches '^[_A-Za-z0-9-]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$' }" /></bean><bean id="emailBean" class="com.yiibai.core.Email"><property name="emailAddress" value="admin@yiibai.com" /></bean></beans>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/80047.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习-卷积神经网络-纹理表示卷积神经网络-卷积神经网络-[北邮鲁鹏]

这里写目录标题 参考文章全连接神经网络全连接神经网络的瓶颈全连接神经网络应用场景 卷积神经网络卷积层(CONV)卷积核卷积操作卷积层设计卷积步长(stride)边界填充特征响应图组尺寸计算 激活层池化层(POOL)池化操作定义池化操作作用池化层超参数常见池化操作 全连接层(FC)样本…

【看好了】如何使用fiddler实现手机抓包,Filters过滤器!

一、Fiddler与其他抓包工具的区别  1、Firebug虽然可以抓包&#xff0c;但是对于分析http请求的详细信息&#xff0c;不够强大。模拟http请求的功能也不够&#xff0c;且firebug常常是需要“无刷新修改”&#xff0c;如果刷新了页面&#xff0c;所有的修改都不会保存&#xff…

成绩分析(蓝桥杯)

成绩分析 题目描述 小蓝给学生们组织了一场考试&#xff0c;卷面总分为 100 分&#xff0c;每个学生的得分都是一个 0 到 100 的整数。 请计算这次考试的最高分、最低分和平均分。 输入描述 输入的第一行包含一个整数 n (1≤n≤104 )&#xff0c;表示考试人数。 接下来 n 行…

数据治理-数据存储和操作-数据处理类型

数据库处理有两种基本类型&#xff0c;ACID和BASE,ACID是酸的意思&#xff0c;而BASE有碱的含义&#xff0c;是对立的两端。CAP定理用于界定分布式系统与ACID(强调一致性C)还是BASE(强调可用性)更加接近。 ACID 原子性&#xff1a;所有操作要么都完成&#xff0c;要么一个也不…

文安县人社局 举办“情暖灾区 就业护航”直播带岗活动

关于防汛救灾工作重要指示精神&#xff0c;助力受灾企业尽快复工复产、受灾群众尽早实现就业。9月15日&#xff0c;文安县人力资源和社会保障局联合文安县总工会、国家税务总局文安县税务局共同举办文安县助力企业灾后重建“直播带岗”活动。 本次活动以“情暖灾区 就业护航”…

IDEA中DEBUG技巧

Debug 介绍 Debug 设置 如上图标注 1 所示&#xff0c;表示设置 Debug 连接方式&#xff0c;默认是 Socket。Shared memory 是 Windows 特有的一个属性&#xff0c;一般在 Windows 系统下建议使用此设置&#xff0c;相对于 Socket 会快点。 ## Debug 常用快捷键 Win 快捷键M…

分享一个Python 写的监控日志log txt文档 的代码

监控log文件的需求 某些特殊原因&#xff0c;想一直看到.log 的最后一行打印&#xff0c;所以写了一些代码监控log &#xff08;有个奇怪需求&#xff0c;就是log 因为重复启动原因&#xff0c;会一直加&#xff0c;不是同一个log&#xff09; 监控界面 涉及的Python代码&…

VS版本下载

VS 版本下载&#xff1a; 怎样才能从微软官网下载VS系列开发工具&#xff1f; - 知乎

华为OD机考算法题:告警抑制

题目部分 题目华为OD机考算法题&#xff1a;告警抑制难度易题目说明告警抑制&#xff0c;是指高优先级告警抑制低优先级告警的规则。高优先级告警产生后&#xff0c;低优先级告警不再产生。请根据原始告警列表和告警抑制关系&#xff0c;给出实际产生的告警列表。 注&#xff…

Unity SteamVR 开发教程:用摇杆/触摸板控制人物持续移动(2.x 以上版本)

文章目录 &#x1f4d5;教程说明&#x1f4d5;场景搭建&#x1f4d5;创建移动的动作&#x1f4d5;移动脚本⭐移动⭐实时调整 CharacterController 的高度 &#x1f4d5;取消手部和 CharacterController 的碰撞 持续移动是 VR 开发中的一个常用功能。一般是用户推动手柄摇杆&…

WSL2 内存只有 Windows 的一半?可以设置 .wslconfig 解决

偶然 htop 发现 WSL 里面的内存只有 16GB&#xff0c;而我的 Windows 是 32GB 的&#xff0c;才了解到默认的设置就是 50% 的 RAM 占用&#xff0c;可以通过设置 .wslconfig 解决这个问题。 .wslconfig 的路径 在 C:\Users\YourUsername\.wslconfig&#xff0c;如果发现没有这…

CNN(八):Inception V1算法实战与解析

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客 &#x1f356; 原作者&#xff1a;K同学啊|接辅导、项目定制 1 Inception V1 Inception v1论文 1.1 理论知识 GoogLeNet首次出现在2014年ILSVRC比赛中获得冠军。这次的版本通常称其为Inception V1。…

strncpy

strncpy&#xff1a; 函数介绍&#xff1a; 函数原型&#xff1a; char *strncpy(char *dest, const char *src, int n) 返回值&#xff1a;dest字符串起始地址 说明&#xff1a; 1、当src字符串长度小于n时&#xff0c;则拷贝完字符串后&#xff0c;剩余部分将用空字节填…

建站系列(八)--- 本地开发环境搭建(WNMP)

目录 相关系列文章前言一、准备工作二、Nginx安装三、MySQL安装四、PHP安装及Nginx配置五、总结 相关系列文章 建站系列&#xff08;一&#xff09;— 网站基本常识 建站系列&#xff08;二&#xff09;— 域名、IP地址、URL、端口详解 建站系列&#xff08;三&#xff09;— …

Linux防火的常用命令

文章目录 防火墙查看状态防火墙启动关闭命令防火墙配置添加规则移除规则 防火墙查看状态 防火墙重新载入(必须重新载入后才能生效) firewall-cmd --reload防火墙查看基础状态 systemctl status firewalld #查看状态查看 防火墙所有规则 firewall-cmd --list-all查看rich-ru…

【设计模式】二、UML 类图概述

文章目录 常见含义含义依赖关系&#xff08;Dependence&#xff09;泛化关系&#xff08;Generalization&#xff09;实现关系&#xff08;Implementation&#xff09;关联关系&#xff08;Association&#xff09;聚合关系&#xff08;Aggregation&#xff09;组合关系&#x…

【JavaScript保姆级教程】输出函数和初识变量

文章目录 前言一、输出内容1.1 document.write()函数1.2 console.log()函数查看终端输出信息 1.3 alert()函数 二、变量的使用1.1 变量的声明1.3变量的赋值1.4 变量的声明和赋值 三、输入提示框的使用总结 前言 JavaScript是一种强大的脚本语言&#xff0c;广泛应用于网页开发…

C++DAY10 结构体·定义与使用

结构体的作用&#xff1a; 结构体属于用户自定义的数据类型&#xff0c;允许用户储存不同的数据类型。 #include<iostream> using namespace std;//结构体的语法 //struct 结构体名 { 结构体成员列表 }; struct Student {//成员列表//姓名string name;//年龄int age;/…

git 提交冲突

提示&#xff1a;您有偏离的分支&#xff0c;需要指定如何调和它们。您可以在执行下一次 提示&#xff1a;pull 操作之前执行下面一条命令来抑制本消息&#xff1a; 提示&#xff1a; 提示&#xff1a; git config pull.rebase false # 合并 提示&#xff1a; git config pull.…

文件批量重命名:自定义命名与扩展名更改

你是否曾经需要批量更改文件名称和类型&#xff1f;如果你有大量文件需要重命名和更改类型&#xff0c;那么今天我们将向你介绍一种简单的方法来轻松批量更改文件名称和类型。无论你是需要将一个文件夹中的所有图片改为另一种格式&#xff0c;还是需要将一个文件夹中的所有文档…