Perl——正则表达式

51 篇文章 31 订阅
6 篇文章 0 订阅

Perl正则表达式

一、正则表达式的应用

正则表达式常有两个应用,一个是查找,一个是替换,替换的核心也是查找。

查找的一个格式:
m/……/匹配模式

替换的一个格式:
s/ ……/替换内容/匹配模式

匹配的规则写在两个斜杠之间,定义规则的字符称为元字符。

二、正则表达式之元字符

2.1 转义

\ : 反斜杠加元字符表示转义,比如 +,*,?,表示这些字符本身。
\b : 匹配单词边界
\B : 匹配非单词边界
\d : 匹配数字0—9中任意一个字符
\D: 匹配非数字
\w: 匹配包括下划线的任何单词字符
\W: 匹配包括非下划线的任何单词字符
\s: 匹配空白字符,包括空格,制表符等
\S: 匹配非空白字符
\n: 匹配换行符
\t: 匹配制表符
\x \x后接十六进制数,匹配这个数的ASCII码对应的符号

2.2 特殊匹配

^ :匹配开头
$ :匹配结尾
. :匹配除换行符外所有字符

2.3 匹配次数

* :匹配0次或多次
+ :匹配一次或多次
\?: 匹配0次或1次

2.4 各种括号 ( ),[ ],{ }

( ) :圆括号内取值,把括号里的值存在$1,$2,……$n里
[ ] :表示多选一。如[abc]匹配a或b或c。连续的字符可以简写如[a-z],[0-9]。
[ ^ ] :表示[ ]里列出的其它字符。
{n} :表示匹配n次
{n,m} : 表示匹配n到m次
| :分组,如m/bill | mike/ 表示bill 或 mike
? :当跟在*,+,?后面表示非贪婪模式。详见Perl——正则表达式之贪婪模式和非贪婪模式

perl 中$1 $2代表的含义
以数字为名的变量保存的是上一次匹配操作(/pattern/)中,第n个小括号中的原符号所匹配内容。
$1就是第一对小括号中的原符号所对应的匹配内容。
$2就是第二对小括号中的原符号所对应的匹配内容。

my $str = "<p>hello world !</p>"; #被匹配文本 
if ($str =~ /<p>(.*?)<\/p>/gs)#匹配<p>...</p><\/p加的\代表后面的符号不进行转义 
	{     
	print "\$1 mean: $1";#$1 mean: hello world !
	}

三、正则表达式的匹配模式

g: global匹配,可以匹配多次
i: 不区分大小写
m:换行匹配
e: 替换的值要先计算 s/(ab+c)/&replace($1)/e,表示查换ab+c,并把找到的结果传给replace()函数,用函数的返回值来替换。这种方法可用于复杂的查找替换。
x: 允许换行加注释,忽略空白字符
s:单行处理,这个模式下元字符可以匹配换行符

利用正则表达式的通配符设置不可用单元名称
——set tech_vars(dont_use_list) [list FRICG* DCG* SDFFX* SDFFN* SDFF4W ]
将以上BUFFER和标准单元设置成不可用。

四、Perl的绑定操作符

=~ :表示满足匹配
!~ : 表示不满足匹配

if($tc =~ m/^tc_/) {……}
#表示如果$tc变量以tc_开头,则执行{}里的语句。
if($tc !~ m/^tc_/) {……}
#表示如果$tc变量不是以tc_开头,则执行{}里的语句。

  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

seu他山之石

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值