正则表达式

本文深入解析正则表达式的各种元素,包括特殊字符、范围、简化表达式、边界匹配、数量表达式及逻辑匹配,并通过Java代码示例展示如何在字符串操作中应用正则表达式,如替换、拆分、验证格式等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.【单个】描述某一个字符
x:表示由x所组成;
\:匹配“\”;
\t:描述的是制表符;
\n:表示换行;

2、【单个】描述一个范围:
[abc]:表示可能是字母a、b、c中的任意一个;

3、【单个】简化表达式:
“.”:表示任意的一位字符;
\d: 等价于“[0-9]”表示任意一位的数字;
\D:等价于“[^0-9]”表示任意的非数字;
\s :表示是一个空格,可能是空格、\t、\n;
\S:表示不是一空格;
\w:等价于"[a-zA-Z0-9]",表示字母、数字、下划线组成
\W:等价于"[^a-zA-Z0-9]",表示不是 字母、数字、下划线组成

4、边界匹配(Java用不到)
^:表示正则的开始;
$:表示正则的结束;

5、数量表达式
正则?:表示该匹配出现 0次或1次;
正则+:表示该匹配出现1次或多次;
正则*:表示该匹配出现0次、1次或多次
正则{n}:表示该匹配出现正好n次;
正则{n,}:表示该匹配出现n次以上;
正则{n,m}:表示该匹配出现n~m次;

6、逻辑匹配
正则A正则B:就表示与的关系在第一个匹配之后立即匹配第二个
正则A|正则B:表示A或B正则出现一次;
(正则):按照一组正则进行处理。

**

二、String类对正则的支持

**

public class TestString {
	public static void main(String[] args) throws Exception {
		String str = "ajjk57513qedad45a7fa45q74%^&&*&%#$ hqjkhjs jkjk";
		String regex = "[^a-zA-Z]"; // 正则,不是字母
		// 按照正则表达式替换所有
		String s1 = str.replaceAll(regex, "");// 把不是字母的替换成空
		System.out.println(s1);

		String str2 = "a24a54w724575e87545e44e5e5s";
		String regex2 = "\\d+"; // 正则[0-9]
		// 按照正则表达式进行拆分
		String[] result = str2.split(regex2);
		for (int i = 0; i < result.length; i++) {
			System.out.println(result[i]);
		}
		System.out.println("-------------------------");
		// 验证是否为整数或小数,如果是装换为double类型
		String str3 = "1125.235";
		String regex3 = "\\d+(\\.\\d+)?";// 小数点前的数字出现一次以上,小数点后的数字可以不出现,可以出现
		if (str3.matches(regex3)) {
			double d = Double.parseDouble(str3);
			System.out.println(d);
		}
		//验证字符串是否为时间,如果是转换为Date类型
		String str4 = "2019-06-22";
		String regex4 = "\\d{4}-\\d{2}-\\d{2}";
		String str5 = "2026-06-26 10:10:16";
		String regex5 = "\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}";
		if (str4.matches(regex4)) {
			System.out.println(new SimpleDateFormat("yyyy-MM-dd").parse(str4));
		}
		if (str5.matches(regex5)) {
			System.out.println(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").parse(str5));
		}
		
		//判断是否为电话号码
		//5687445 \\d{7,8}
		//0105687445  ((\\d{3}))?\\d{7,8}
		//(010)-5687445  ((\\((\\d{3})\\)-)|(\\d{3}))?\\d{7,8}
		String num1="5687445"; 
		String num2="0105687445";
		String num3="(010)-5687445";
		String regex6="((\\((\\d{3})\\)-)|(\\d{3}))?\\d{7,8}";
		System.out.println(num1.matches(regex6));
		System.out.println(num2.matches(regex6));
		System.out.println(num3.matches(regex6));
		
		//验证邮箱地址
		String emil="z_zhuo@outlook.com";
		String regex7="[a-zA-Z][a-zA-Z_\\.0-9]{5,9}@[a-zA-Z_\\.0-9]{1,9}\\.(cn|com|net)";
		System.out.println(emil.matches(regex7));
	}
}

**

三、Pattern类与Matcher类

**

public class TestPattern {
	public static void main(String[] args) {
		String str="a|b|c";
		String regex="\\|";
		Pattern pat=Pattern.compile(regex);
		String [] result=pat.split(str);
		for(String s:result){
			System.out.println(s);
		}
	}
}
public class TestMatcher {
	public static void main(String[] args) {
		String str="INSERT INTO member(mid,name,age) VALUES "
				+ "(#{member.mid},#{member.name},#{member.age})";
		String regex="#\\{[a-zA-Z_0-9\\.]+\\}";   //分组的正则表达式
		Pattern pat=Pattern.compile(regex);
		Matcher mat=pat.matcher(str);
		while(mat.find()){    //依次进行比较,如果符合则取出内容
			 System.out.println(mat.group(0));
		}
	}
}

运行截图:
在这里插入图片描述

内容概要:文章基于4A架构(业务架构、应用架构、数据架构、技术架构),对SAP的成本中心和利润中心进行了详细对比分析。业务架构上,成本中心是成本控制的责任单元,负责成本归集与控制,而利润中心是利润创造的独立实体,负责收入、成本和利润的核算。应用架构方面,两者都依托于SAP的CO模块,但功能有所区分,如成本中心侧重于成本要素归集和预算管理,利润中心则关注内部交易核算和获利能力分析。数据架构中,成本中心与利润中心存在多对一的关系,交易数据通过成本归集、分摊和利润计算流程联动。技术架构依赖SAP S/4HANA的内存计算和ABAP技术,支持实时核算与跨系统集成。总结来看,成本中心和利润中心在4A架构下相互关联,共同为企业提供精细化管理和决策支持。 适合人群:从事企业财务管理、成本控制或利润核算的专业人员,以及对SAP系统有一定了解的企业信息化管理人员。 使用场景及目标:①帮助企业理解成本中心和利润中心在4A架构下的运作机制;②指导企业在实施SAP系统时合理配置成本中心和利润中心,优化业务流程;③提升企业对成本和利润的精细化管理水平,支持业务决策。 其他说明:文章不仅阐述了理论概念,还提供了具体的应用场景和技术实现方式,有助于读者全面理解并应用于实际工作中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值