美文网首页
【Perl】——6. 正则表达式

【Perl】——6. 正则表达式

作者: lkj666 | 来源:发表于2021-02-07 13:36 被阅读0次

2021.2.6
持续更新中。。。


《Perl语言入门》


1. 正则表达式简介

正则表达式(regular expression, regex)是指用某种模式去匹配一类字符串的一个公式,类似其他工具中的查找和替换操作。


2. 正则表达式

2.1 量词

作用:指定匹配的次数

  • ?:匹配零次或一次
  • *:至少匹配零次
  • +:至少匹配一次
  • {m,n}:匹配m到n次
  • {m}:匹配m次

后面加上?就是非贪婪模式,例如??。它会直接找最接近的符合条件的部分。

2.2 模式分组

作用:用()将需要匹配的内容括起来,当成一个整体看待,后续可以进行反向引用(即将括起来的内容重新执行一遍)

  • ():模式分组
  • \g{N}:反向引用,N为左起第N个括号

2.3 择一匹配

作用:匹配两侧的某一侧

  • |:任意匹配左侧或右侧

2.4 字符集

作用:常用字符串集合,但只匹配其中的某一个字符

  • []:匹配其中的一个字符
  • [0-9]:匹配任意一个数字,等价于\d

2.5 锚位

作用:定位进行匹配的位置

  • \A:匹配字符串的绝对开头,等价于^
  • \z:匹配字符串的绝对结尾,等价于$
  • \b:单词边界锚位

2.6 常用表达式:

  • \d+:匹配任意数字
  • \s+:匹配任意空白
  • .*:匹配不包括换行符在内的任意字符
  • \d\D:匹配任意字符
  • \w+:匹配任意单词,这里的单词指数字、下划线和大小写字母
  • ^\s+$:匹配空白行

3. 用正则表达式进行匹配

  • 匹配的形式:m//。通常可以省略m,加上m后,可替换成不同成对的定界符比如m# #
  • 作用:相当于查找功能。

3.1 模式匹配修饰符

作用:在正则表达式末尾追加一些字符,调整模式的匹配行为。

  • /i:大小写无关的匹配
  • /s:匹配任意字符
  • /x:加入辅助空白字符
  • /m:对多行进行匹配,通常配合^、$进行使用。

行首和字符串首的理解:对于人来说,换行符起到分割字符的作用,看起来就是多行的。但是对于Perl来说,整堆东西就是一个大的字符串。

3.2 绑定操作符

作用:指定要匹配某个模式的文本,左侧为文本,右侧为模式,Perl中默认匹配$_变量中的内容。

  • =~

3.3 捕获变量

定义:捕获组会将正则表达式圆括号中匹配到的字符串保存到相应的变量,通常从$1开始。

3.3.1 禁用圆括号的捕获功能

  • (?:模式)

3.3.2 自动捕获变量

  • $`:匹配到区段的前部,等同于${^PREMATCH}
  • $&:刚好匹配到的区段,等同于${^MATCH}
  • $':匹配到区段的后部,等用于${^POSTMATCH}

3.4 优先级

圆括号 > 量词 > 锚位和字符序列 > 择一 > 原子


4. 用正则表达式处理文本

替换的形式:s///。通常可以省略s,加上s后,可采用不同成对的定界符。
作用:相当于替换功能。

4.1 修饰符

  • /g:全局替换

模式匹配中的修饰符都可以用

4.2 常用表达式

  • \u\L:后续字符转变为首字母大写,其余字符小写
  • \L:后续字符全部转换为小写

4.3 元字符转义

  • \:反斜线后的元字符只保留字符意义
  • \Q...\E\Q\E之间的所有元字符只保留字符意义

4.4 与正则相关的操作符

  1. split操作符
按照`:`切割标量成数组
my @fields = split /:/, $string;
  1. join函数
用“:”将数组连接成一个标量
my $result = join ":", @pieces;

相关文章

  • R 正则表达式

    前言 R中的正则表达式模式有三种 1、扩展正则表达式:默认方式 2、Perl风格正则表达式:设置参数perl = ...

  • Effective Perl-chapter3

    今天这个主要是介绍perl语言中的正则表达式,perl的正则表达式本身就相当于一门语言,而且这门语言甚至比perl...

  • 【Perl】——6. 正则表达式

    2021.2.6持续更新中。。。 《Perl语言入门》 1. 正则表达式简介 正则表达式(regular expr...

  • centos系统下安装nginx

    1、pcre是一个perl库,包括perl兼容的正则表达式库,nginx的http模块使用pcre来解析正则表达式...

  • 正则表达式篇 之三(BRE和ERE区别)

    POSIX规范 常见的正则表达式记法,其实都源于Perl,实际上,正则表达式从Perl衍生出一个显赫的流派,叫做P...

  • 【Perl编程-6】正则表达式--匹配

    perl语言的强大之处就在于他的正则表达式,Perl的正则表达式的三种形式,分别是匹配,替换和转化: 匹配:m//...

  • Learning Perl 学习笔记 Ch7 正则表达式(一)漫

    正则表达式 是Perl最著名的特性,在Perl中使用正则表达式的简易方式是将要匹配的文本保存在$_中,然后用一对斜...

  • JavaScript正则表达式

    JavaScript的正则表达式语法是Perl15的正则表达式语法的大型子集。 正则表达式的创建 像创建对象一样,...

  • 使用grep搜索多个字符串

    Grep的多条件搜索模式 grep支持三种正则表达式语法:Basic、Extended和Perl正则表达式。当没有...

  • Golang标准库——regexp

    regexp regexp包实现了正则表达式搜索。正则表达式采用RE2语法(除了\c、\C),和Perl、Pyth...

网友评论

      本文标题:【Perl】——6. 正则表达式

      本文链接:https://www.haomeiwen.com/subject/fkvwtltx.html