perl正则表达式匹配任意单字符_Perl-正则表达式

7c6d1f4e951de97de5c38f0011e7ebf5.png

概述

正则表达式(Regular Expression)用于匹配具有特定模式的字符串,然后对匹配上的字符串进行操作。Perl语言的正则表达式基本上是所有常用语言中最强大的,很多语言的正则表达式都参考Perl的正则表达式。


正则基础知识

  • 元字符(Metacharacters)

. 匹配任意一个字符,n除外;
* 匹配0个或多个任意字符;
+ 匹配前面那个字符1次以上;
? 匹配前面那个字符0或一次;
| 或者,匹配左边或右边内容;

  • 字符集

[a-z] 匹配26个小写字母
[A-Z] 匹配26个大写字母
[a-zA-Z] 匹配大小写字母
[0-9] 匹配数字
[0-9a-zA-Z] 匹配数字字母

  • 反斜线字符

s: 匹配任意空白符,即 [ftnr ].
S: 匹配非空白字符
d: 匹配数字,等价于[0-9]
D: 匹配非数字,等价于[^0-9]

  • 单词相关字符

单词包含数字、字母和下划线,即[_0-9a-zA-Z]
b: 匹配单词边界处的空字符
B: 匹配非单词边界处的空字符
<: 匹配单词开头处的空字符
>: 匹配单词结尾处的空字符
w: 匹配单词构成部分
W: 匹配非单词构成部分

  • 锚定

^: 锚定匹配行首位置
$: 锚定匹配行末尾位置
^$:空行

  • 分组捕获和反向引用

使用()对匹配内容进行分组并暂时保存,分组后会有分组编号(第一个()编号为1,第N个编号为N);
可以使用N的方式反向引用这些编号对应的内容;
区分该括号是第几组方法:依次点算左括号序号;

Perl正则表达式

  • 在运用Perl的正则表达式时,有三种形式,匹配、替换、转化:
Perl匹配 m/.../
Perl 替换 s/.../.../
Perl 转写 tr/.../.../
  • 上述三种形式都可以和=~或!~搭配使用,=~表示匹配,!~表示不匹配
  • 如果左侧没有待处理的标量变量,则默认为处理$_变量中的内容

举例如下:

$str="I love Perl";

if ($str=~m/Perl/)
{
    print "there exist a Perl in $str"."n";
}

if ($str=~s/Perl/Bash/)
{
    print "replace Perl with BASH in $str"."n";
}

if ($str=~tr/A-Z/a-z/)
{
    print "translate all lower cases to upper cases in $str"."n";
}

结果:

there exist a Perl in I love Perl
replace Perl with BASH in I love Bash
translate all lowwer case to upper case in i love bash
  • 模式匹配有一些常用的修饰符,如:
i    忽略模式中的大小写

x    忽略模式中的空白

g    全局匹配

*    匹配0个或多个任意字符

+    匹配 1 个或更多字符

?    匹配 0 或 1 个字符

|    用来匹配不同的模式

()   用于存储匹配的模式。

[]   可以传递一组字符。

^    字符串的开头

$    字符串结束

w   用于匹配单个字符或单词,可以是字母数字,包括 _

W   匹配除字母数字以外的任何内容

s   用于匹配空格

S   匹配除空格以外的任何内容

d   匹配数字。

D   匹配数字以外的任何内容。

n   匹配换行符

.    匹配包括空格在内的任何字符。
  • perl处理匹配语句之后,会存在三个特殊变量名:
$`: 匹配部分的前一部分字符串

$&: 匹配的字符串

$': 还没有匹配的剩余字符串
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值