Perl之正则表达式

  正则表达式(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

相关推荐

  1. 【Golang】Perl 表达式语法的支持示例

    2024-07-17 04:22:01       52 阅读
  2. linux表达式^

    2024-07-17 04:22:01       51 阅读
  3. linux表达式*

    2024-07-17 04:22:01       35 阅读
  4. Python学习路-表达式

    2024-07-17 04:22:01       57 阅读
  5. MySQLDQL表达式

    2024-07-17 04:22:01       45 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-17 04:22:01       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-17 04:22:01       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-17 04:22:01       58 阅读
  4. Python语言-面向对象

    2024-07-17 04:22:01       69 阅读

热门阅读

  1. 类和对象(2

    2024-07-17 04:22:01       29 阅读
  2. Elasticsearch:6.0及其ES-Head插件安装

    2024-07-17 04:22:01       25 阅读
  3. 【架构-20】引擎和库

    2024-07-17 04:22:01       24 阅读
  4. 如何在vue3中实现动态路由

    2024-07-17 04:22:01       24 阅读
  5. JWT 认证校验 从理论到实战

    2024-07-17 04:22:01       27 阅读
  6. vue3 学习笔记12 -- 插槽的使用

    2024-07-17 04:22:01       25 阅读
  7. PHP 包含

    2024-07-17 04:22:01       18 阅读
  8. 扫地机器人如何解决室内空气污染问题

    2024-07-17 04:22:01       19 阅读
  9. python 概述

    2024-07-17 04:22:01       17 阅读
  10. ChebNetII

    ChebNetII

    2024-07-17 04:22:01      15 阅读