perl正则表达式就是通过一串特别设计的字符串,可以按照我们的需求匹配、替换、转化目标字符串。本文主要是对一些常用的正则表达以及语法的总结以及举例,供广大喜爱Perl的同学交流学习。

操作符:

=~ 或 != 分别表示匹配与不匹配

$regx = "perl";

$string = "I like perl";

if ($string =~ $regx){

  print "match";}


匹配、替换、转化

匹配:m/<regexp>/;或/<regexp>/;

如:$string =~ m/$regx/;

替换:s/<pattern>/<replacement>/

s/<pattern>/<replacement>/g:在末尾加上g表示把字符串中所有匹配<pattern>的模式全部替换为<replacement>。

如:$string =~ s/$regx/python/;

转化:tr/<pattern>/<replacemnt>/

如:$str =~ tr/A-Z/a-z/;

选项说明:

  • g 匹配所有可能的模式
  • i 忽略大小写
  • x 忽略模式中的空白

得到匹配的字符串:

正则表达式中圆括号里匹配的模式,依次赋给系统变量:$1,$2,...。

  my $string = "I get up 8:00 every morning";

  if ( $string =~ /([0-9]+):([0-9]+)/ ){

   print "$1:$2";}


转义符号\

有时我们需要匹配一些特殊符号,那么需要对其进行转义,需要在特殊字符前加上转义符\,如回车\\n,制表符\\t,斜杠\\和\/,引号\'和\",方括号\[和\],圆括号\(和\),美元号\$,上尖号\^,星号\*,点号\.,问号\?,加号\+等等。

如:匹配字符串中的美元符号:

  $string = "I earn $123.7";

  if ($string =~ /\$/){...}


正则表达式常用模式:

  • . 匹配除换行符以外的所有字符
  • x? 匹配 0 次或一次 x 字符串
  • x* 匹配 0 次或多次 x 字符串,但匹配可能的最少次数
  • x+ 匹配 1 次或多次 x 字符串,但匹配可能的最少次数
  • .* 匹配 0 次或一次的任何字符
  • .+ 匹配 1 次或多次的任何字符
  • {m} 匹配刚好是 m 个 的指定字符串
  • {m,n} 匹配在 m个 以上 n个 以下 的指定字符串
  • {m,} 匹配 m个 以上 的指定字符串
  • [] 匹配符合 [] 内的字符
  • [^] 匹配不符合 [] 内的字符
  • [0-9] 匹配所有数字字符
  • [a-z] 匹配所有小写字母字符
  • [^0-9] 匹配所有非数字字符
  • [^a-z] 匹配所有非小写字母字符
  • ^ 匹配字符开头的字符
  • $ 匹配字符结尾的字符
  • \d 匹配一个数字的字符,和 [0-9] 语法一样
  • \d+ 匹配多个数字字符串,和 [0-9]+ 语法一样
  • \D 非数字,其他同 \d
  • \D+ 非数字,其他同 \d+
  • \w 英文字母或数字的字符串,和 [a-zA-Z0-9] 语法一样
  • \w+ 和 [a-zA-Z0-9]+ 语法一样
  • \W 非英文字母或数字的字符串,和 [^a-zA-Z0-9] 语法一样
  • \W+ 和 [^a-zA-Z0-9]+ 语法一样
  • \s 空格,和 [\n\t\r\f] 语法一样
  • \s+ 和 [\n\t\r\f]+ 一样
  • \S 非空格,和 [^\n\t\r\f] 语法一样
  • \S+ 和 [^\n\t\r\f]+ 语法一样
  • \b 匹配以英文字母,数字为边界的字符串
  • \B 匹配不以英文字母,数值为边界的字符串
  • a|b|c 匹配符合a字符 或是b字符 或是c字符 的字符串

Perl正则表达式的更多相关文章

  1. Perl正则表达式例子

    Perl正则表达式 一.介绍 正则表达式各语言都有自己的规范,但是基本都差不多,都是由元字符的组合来进行匹配:由于Nmap内嵌的服务与版本探测是使用的Perl正则规范,因此此篇博客记录一下Perl正则 ...

  2. Perl 正则表达式语法

    1. 概要 Perl正则表达式是Boost.regex 默认行为,也可以将perl传入basic_regex 构造. boost::regex  e1(my_expression); boost::r ...

  3. Perl 正则表达式

    匹配:m/<regexp>;/ (还可以简写为 /<regexp>;/ ,略去 m)替换:s/<pattern>;/<replacement>;/转化: ...

  4. perl正则表达式第一周笔记

    正则表达式基础 ^ 行首标志 $ 行末标志 如^cat即一整行只有cat这个单词,^则是一个空行 [  ] 字符组,用来匹配若干字符之一 如gr[ae]y,即grey或者gray - 在字符组内部,字 ...

  5. perl正则表达式第三周笔记

    正则引擎的分类 正则引擎的分类 正则引擎的分类主要分两种: DFA:egrep.awk.lex.flex NFA:.NET.PHP.Perl.Ruby.Python.GNU Emacs.ed.sec. ...

  6. perl正则表达式第二周笔记

    1.使用正则表达式修改文本 1.使用正则表达式修改文本 正则表达式的功能不只有查询,还可以对文本进行修改,例如替换 $var=~m/regex/i $var=~s/regex/replacement/ ...

  7. perl 正则表达式之匹配

    一.用m//进行匹配 上篇用双斜线的写法表示模式,事实上是m//的简写,所谓简写,就是当用双斜线作为定界符的时候,可有省略开头的m. 不使用简写的时候,可以使用任何定界符表示模式,m().m<& ...

  8. posix,perl正则表达式区别

    1.正则表达式(Regular Expression,缩写为regexp,regex或regxp),又称正规表达式.正规表示式或常规表达式或正规化表示法或正规表示法,是指一个用来描述或者匹配一系列符合 ...

  9. Perl正则表达式超详细教程

    前言 想必学习perl的人,对基础正则表达式都已经熟悉,所以学习perl正则会很轻松.这里我不打算解释基础正则的内容,而是直接介绍基础正则中不具备的但perl支持的功能.关于基础正则表达式的内容,可参 ...

随机推荐

  1. 【Mysql优化】索引覆盖

    索引覆盖 是指 如果查询的列恰好是索引的一部分,那么查询只需要在索引文件上进行,不需要回行到磁盘再找数据.这种查询速度非常快,称为”索引覆盖”,比平时的查询少一次到磁盘读数据的操作.(索引正好覆盖到查 ...

  2. chromedriver版本 支持的Chrome版本

    在使用selenium测试时,如果选择chrome浏览器,需要将chrome driver的exe文件放在项目下 错误的driver版本,会导致无法正常打开本机的浏览器 以下为对应关系 来自网络 ch ...

  3. 25个Linux相关的网站【转】

    转自:http://www.cnblogs.com/Lindaman/p/4552805.html 下面是25个最具有影响力,也是最重要的Linux网站,这些网站提供了Linux的分发包,软件,文件, ...

  4. sublime Text3 === 无法输入input的问题解决办法

    sublimetext无法对input或者raw_input执行.因此搜了很多方法后,解决了这个问题: 1.先下载插件sublimerepl ,如果无法下载,请点击https://github.com ...

  5. CNN中千奇百怪的卷积方式大汇总

    1.原始版本 最早的卷积方式还没有任何骚套路,那就也没什么好说的了. 见下图,原始的conv操作可以看做一个2D版本的无隐层神经网络. 附上一个卷积详细流程: [TensorFlow]tf.nn.co ...

  6. JavaScript原型与继承(1)

    内容: 创建对象的几种模式以及创建的过程 原型链prototype的理解,以及prototype与 __proto__([[Prototype]])的关系 继承的几种实现 1.常见模式与原型链的理解 ...

  7. 流程控制--while

    /* while 是在有条件控制的情况下 进行的循环 */ [root@localhost test1]# vim .py //ADD #!/usr/bin/python n = while True ...

  8. 3.4Code

    #include<algorithm> #include<iostream> #include<cstdio> #define inf 0x3f3f3f3f #de ...

  9. django开发项目实例1--建立一个项目并初步运行

    1:进入目标目录新建一个项目 D:\>django-admin.py startproject qiweijie 新建完成后,进入项目文件夹查看目录 D:\>cd qiweijie D:\ ...

  10. POJ 1733 Parity game(带权并查集)

    题目链接:http://poj.org/problem?id=1733 题目大意:给你m条信息,每条信息告诉你区间l~r的1的个数是奇数还是偶数,如果后面出现信息跟前面矛盾则这条信息是错误的,问在第一 ...