Perl之正则表达式

news2024/9/23 17:17:58

  正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。
  Perl语言的正则表达式功能非常强大,基本上是常用语言中最强大的,很多语言设计正则式支持的时候都参考Perl的正则表达式。
  Perl的正则表达式的三种形式,分别是匹配、替换和转化:
  匹配:m//(还可以简写为//,略去m)
  替换:s///
  转化:tr///
  这三种形式一般都和 =~ !~ 搭配使用, =~ 表示相匹配,!~ 表示不匹配。

1.匹配操作符

  匹配操作符 m// 用于匹配一个字符串语句或者一个正则表达式。
  例如,匹配标量str中的字符串”123”;

#! /usr/bin/perl
$str="正则表达式使用,匹配参数123,456,798!";
if($str=~"123")#=~表示相匹配
{
	printf("匹配成功\n");
}
else
{
	printf("匹配失败\n");
}

2.模式匹配修饰符

在这里插入图片描述

正则表达式变量
   perl处理完后会给匹配到的值存在三个特殊变量名:
   $`: 匹配部分的前一部分字符串
   $&: 匹配的字符串
   $': 还没有匹配的剩余字符串

示例:

#! /usr/bin/perl
$str="正则表达式使用,匹配参数123,456,798!";
print "原始字符串:$str\n";
if($str=~"123")#=~表示相匹配
{
	
	printf("匹配成功,匹配字符串之前内容:$`\n");
	printf("要匹配的字符串:$&\n");
	printf("匹配的字符串之后的内容:$'\n");
}
else
{
	printf("匹配失败\n");
}

不区分大小写示例:

#! /usr/bin/perl
$str="hello,welcomewByQ";
if($str=~/WBYQ/i) #i表示不区分大小写
{
	print "匹配成功,匹配字符串:$&\n";
	print "匹配前面字符:$`";
}

示例:

[wbyq@wbyq 0709]$ ./1.pl
匹配成功,匹配字符串:wByQ
匹配前面字符:hello,welcome

3.替换操作符

  替换操作符s///是匹配操作符的扩展,使用新的字符串替换指定的字符串。基本格式如下:
  格式:s/PATTERN/REPLACEMENT/;
  PATTERN 为替换内容
  REPLACEMENT 为要替换的字符串
  示例:

#! /usr/bin/perl
$str="hello,wbyq,welcome!";
print "$str\n";
$str=~s/wbyq/WBYQ/; #将"wbyq"替换为"WBYQ"
print "$str\n";

运行效果:

[wbyq@wbyq 0709]$ ./1.pl
hello,wbyq,welcome!
hello,WBYQ,welcome!

4.替换操作修饰符

  替换操作修饰符如下表所示:
在这里插入图片描述

5.转化操作符

  以下是转化操作符相关的修饰符:
在这里插入图片描述

#! /usr/bin/perl
$str="hello,welcomewByQ";
$str=~tr/a-z/A-Z/;#将所有的小写转换为大写
print "$str\n";
$str="hello,aaa,bbb,ccc,DDD";
print "原字符串:$str\n";
$str=~tr/a-z,A-Z//s; #将重复的字符删除
print "原字符串:$str\n";

运行效果:

[wbyq@wbyq 0709]$ ./1.pl
HELLO,WELCOMEWBYQ
原字符串:hello,aaa,bbb,ccc,DDD
原字符串:helo,a,b,c,D

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

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

相关文章

论 Suspense 组件在 Vue 3 中的重要性

大家好,我是CodeQi! 一位热衷于技术分享的码仔。 你是否曾经遇到过在加载大量数据时,界面卡顿或是空白的问题? 如果你正在开发一个复杂的前端项目,那么一定需要处理很多异步数据请求。而异步请求太多就会导致用户看到空白屏幕时间变长,这对用户体验非常不友好。🤔 在…

【C++】C++11的新特性 --- 列表初始化,auto关键字,decltype关键字

人的理想与成就之间有一段距离 只有靠他的热情才能跨越。 -- 纪伯伦 C11特性 1 C 11介绍2 列表初始化3 声明3.1 auto关键字3.2 decltype关键字3.3 nullptr3.4 总结 4 STL中的新容器4.1 array4.2 forward_list4.3 unordered系列 Thanks♪(・ω・)&#x…

springboot项目 导入 maven坐标 错误 Could not transfer artifact XXX

1.报错原因 当时导入的是 redis坐标 ,导入jar 包报错(当时是网速太慢了,一直卡着不动 就关了 idea 重新下载)结果报错 之前的redis 项目都可以的,网上找了一下 都没解决 2.解决办法 既然说不能传输, 就说…

玩转HarmonyOS NEXT之AppStorage应用全局UI状态存储

概述 AppStorage是应用全局的UI状态存储,是和应用的进程绑定的,由UI框架在应用程序启动时创建,为应用程序UI状态属性提供中央存储。 AppStorage是在应用启动的时候会被创建的单例。它的目的是为了提供应用状态数据的中心存储,这…

【Pytorch】数据集的加载和处理(一)

Pytorch torchvision 包提供了很多常用数据集 数据按照用途一般分为三组:训练(train)、验证(validation)和测试(test)。使用训练数据集来训练模型,使用验证数据集跟踪模型在训练期间…

Andriod Stdio新建Kotlin的Jetpack Compose简单项目

1.选择 No Activity 2.选择kotlin 4.右键选择 在目录MyApplication下 New->Compose->Empty Project 出现下面的画面 Finish 完成

SpringAI简单使用

Ollama 简介 Ollama是一个开源的大型语言模型服务工具,它允许用户在本地机器上构建和运行语言模型,提供了一个简单易用的API来创建、运行和管理模型,同时还提供了丰富的预构建模型库,这些模型可以轻松地应用在多种应用场景中。O…

数据库第6次作业

内容 1、创建视图v_emp_dept_id_1,查询销售部门的员工姓名和家庭住址 2、创建视图v_emp_dept,查询销售部门员工姓名和家庭住址及部门名称。 3、创建视图v_dept_emp_count(dept_name,emp_count,avg_salay),统计每个部门人数并计算平均工资。 …

【漏洞复现】泛微e-cology9 WorkflowServiceXml SQL注入漏洞

文章目录 前言漏洞描述影响范围 漏洞复现nuclei脚本 安全修复 前言 泛微协同管理应用平台e-cology是一套兼具企业信息门户、知识文档管理、工作流程管理、人力资源管理、客户关系管理、项目管理、财务管理、资产管理、供应链管理、数据中心功能的企业大型协同管理平台。 漏洞…

03MFC画笔/画刷/画椭圆/圆/(延时)文字

文章目录 画实心矩形自定义画布设计及使用连续画线及自定义定义变量扇形画椭圆/圆输出颜色文本定时器与定时事件画实心矩形 自定义画布设计及使用 连续画线及自定义定义变量 扇形 画椭圆/圆 输出颜色文本

【应急响应】Windows应急响应手册(准备阶段、挖矿病毒)

文章目录 前言一、事前准备操作系统基本配置工具准备 二、挖矿病毒确定IOC信息获取异常进程的pid寻找恶意样本确定进程启动时间处理异常进程 前言 本篇文章主要以WIndows系统为例围绕红蓝对抗和攻防角度实施应急响应的技术手段,以多方面、多维度进行展开&#xff0…

HCNA ICMP:因特网控制消息协议

ICMP:因特网控制消息协议 前言 Internet控制报文协议ICMP是网络层的一个重要协议。ICMP协议用来在网络设备间传递各种差错和控制信息,他对于手机各种网络信息、诊断和排除各种网络故障有至关重要的作用。使用基于ICMP的应用时,需要对ICMP的工…

网工内推 | 云计算,网络安全工程师,13薪,发展空间广阔

01 上海飞络信息科技有限公司 🔷招聘岗位:网络安全工程师 🔷岗位职责: 1. 熟悉各品牌路由器、交换机、防火墙的配置与方案(主要为:思科、华为、Fortigate、PA等); 2. 网络配置设定&…

java并发编程的艺术1

1.上下文交换 减少上下文交换的方法 无锁并发编程:进行数据操作,多线程竞争锁,引起上下文切换。将变量按照id 进行hash,不同线程处理不同段的数据 CAS(compare and swap) A线程和B线程都要修改变量X&…

Classifier-Free Guidance (CFG) Scale in Stable Diffusion

1.Classifier-Free Guidance Scale in Stable Diffusion 笔记来源: 1.How does Stable Diffusion work? 2.Classifier-Free Diffusion Guidance 3.Guide to Stable Diffusion CFG scale (guidance scale) parameter 1.1 Classifier Guidance Scale 分类器引导是…

虚拟机及其Debian(kali)安装

本机电脑为Windows10系统专业版,在此基础上安装VMware和系统(Kali) 步骤如下 一、安装 VMware Workstation Pro v16.2.4 安装步骤可参照网上博客,该步骤较简单,此处不做讲解。文件中共计两个,其中一个是激活…

python的异常

异常 定义 异常是程序执行中发生的错误事件,它可以打断正常的指令流。Python提供了强大的异常处理机制,允许程序在发生错误时执行某些替代指令,而不是直接崩溃。 类型 TypeError:类型错误,比如尝试将字符串和整数相加。…

Nest.js 实战 (一):使用过滤器优雅地统一处理响应体

前言 在我们实际的业务开发中,我们可以看到后端接口返回格式都有一定的要求,假如我们统一规定接口的统一返回格式为: {data: any; // 业务数据code: number; // 状态码msg: string; // 响应信息timestamp: number; // 时间戳 }那么在 Nest.…

【数据结构】:时间和空间复杂度

目录 如何衡量一个代码的好坏 时间复杂度 概念 计算方法 实例计算 【实例1】 【实例2】 【实例3】 【实例4】:冒泡排序的时间复杂度 【实例5】:二分查找的时间复杂度 【实例6】:阶乘递归的时间复杂度 【实例7】:斐波那契…

昇思25天学习打卡营第22天|GAN图像生成

今天是参加昇思25天学习打卡营的第22天,今天打卡的课程是“GAN图像生成”,这里做一个简单的分享。 1.简介 今天来学习“GAN图像生成”,这是一个基础的生成式模型。 生成式对抗网络(Generative Adversarial Networks,GAN)是一种…