美文网首页
第8章 用正则表达式进行匹配

第8章 用正则表达式进行匹配

作者: Hannahhao | 来源:发表于2020-03-08 21:24 被阅读0次

1. 用m//进行匹配

  • 正则表达式完整的写法是:m/ / (m表示match),与qw/ /类似。
  • 界定符可以自行选择。但/使用 /时,m可以省略,并且定界符要选模式中不会出现的字符。

2. 模式匹配修饰符

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

- 用/i进行大小写无关的匹配

- 用/s匹配任意字符

点号.无法匹配换行符,希望.能匹配换行符,可以加/s修饰符。

- 用/x加入辅助空白字符

/x修饰符允许我们在模式里随意加上空白字符,使得它更易阅读和理解

/-?[0-9]+\.?[0-9]*/
/ -? [0-9]+ \.? [0-9]* /x

- 联合使用修饰符

如果要对单词匹配使用多项修饰符,只需要把它们连接在一起写在末尾,顺序无关紧要。
if (/barney.*fred/is) { # 同时使用/i 和/s

- 选择字符的解释方式

/a: 对字符集采取ASCII方式解释
/u: 以Unicode方式解释
/l: 根据本地化语言的设定,用对应的字符集编码做解释

- 行首和行尾锚位

修饰符/m会改变锚位的行为。
/fred$/m:找出行末出现fred的字符串
/^barney/m:匹配字符串开头位置和换行符之后的位置

- 其他选项

3. 绑定操作符 =~

正侧表达式默认匹配的目标文本时$_。
如果要指定匹配某个变量中的文本,可以在绑定操作符=~的左侧写上变量,右侧写上正则表达式。

4. 捕获变量

正则表达式里的圆括号()一般都会触发正则引擎捕捉匹配到的字符串。
捕获组会把匹配括号中模式的字符串保存到相应变量。
每个捕获组包含的都是原始字符串中的内容,而不是模式本身,实质上时标量变量。在Perl里面他们是1和2这样的形式。
模式中有多少个捕获括号就有多少个对应名字的捕获变量。

- 捕获变量的存续期

捕获变量的内容一般会保持到下次成功匹配位置。

- 禁用捕获的括号

只分组禁用捕获:?:

- 命名捕获

(?<LABEL自行命名>PATTERN)

- 自动捕获变量

&:作为匹配模式的字符串能匹配到的内容会被自动存在&里
`:匹配区段之前的内容会存到`里
$':保存了字符串中剩下的从未被匹配到的部分

5. 优先级

  • 顶端:括号 用于分组和捕获
  • 第二级:量词( * + ?)
  • 第三级:锚位(\A、\Z、\z、^、$、\b、\B)和字符序列
  • 第四级:择一竖线(|)
  • 最低级:原子(单独字符,字符集合和反引用)
正则表达式特性 示例
圆括号 (...), (?:...), (?<LABEL>...)
量词 a*, a+, a?, a{n,m}
锚位和字符序列 abc, ^, $, \A, \b, \z, \Z
择一 竖线
原子 a,[abc], \d, \1, \g{2}

- 优先级示列 (略)

- 还有更多 (略)

6. 模式测试程序

下面这个程序可以用于检测某些字符串是否能被指定模式匹配以及在什么位置上匹配:

while (<>) { #每次读一行输入
     chomp;
     if (/ YOUR_PATTERN_GOES_HERE/) {
         print "Matched: |$`<$&>$'|\n"; #特殊捕获变量
} else {
        print "No match: |$_|\n";
}
}

相关文章

  • MySQL用正则表达式进行搜索

    用正则表达式进行搜索 1.正则表达式介绍 ​ 对于基于的过滤(或者甚至是某些不那么基本的过滤),可以用匹配、比...

  • 使用VSCode去除代码中注释

    将项目用vscode打开 按照下图点击,进行正则搜索正则搜索 匹配替换注释 正则匹配规则正则表达式说明/conte...

  • iOS 开发中使用正则表达式匹配并替换对应字符

    今天在写一个项目的时候用到了正则表达式;将正则表达式与字典中的 key 进行匹配,并将匹配到的字符串用 key 对...

  • 第10章 使用stringr处理字符串P2

    第10章 使用stringr处理字符串 要到正则表达式了!紧不紧张!刺不刺激 :) 使用正则表达式进行模式匹配 准...

  • 用正则表达式进行匹配

    用/i进行大小无关的匹配 用/s匹配任意字符,包括换行符 组合选项修饰符 锚位\A匹配字符串的绝对开头,\z匹配字...

  • 《mysql必知必会》读书实战笔记9-正则过滤文本

    第9章 用正则表达式搜索 1、正则表达式介绍 正则表达式是用来匹配某种文本模式的特殊字符串(字符集合),由正则表达...

  • Linux三剑客之一awk

    1. 使用方法 1.1 命令格式 pattern表示 AWK 在数据中查找的内容,可以用正则表达式来进行匹配,用/...

  • MySQL 正则表达式查询

    正则表达式用来匹配文本的特殊的串(字符集合)。正则表达式用正则表达式语言来建立,正则表达式语言是用来完成匹配特殊的...

  • 第8章 用正则表达式进行匹配

    1. 用m//进行匹配 正则表达式完整的写法是:m/ / (m表示match),与qw/ /类似。 界定符可以自行...

  • MySQL正则表达式

    一.简介 正则表达式的作用是匹配文本,将一个模式(正则表达式)与一个文本串进行比较。MySQL用where子句对正...

网友评论

      本文标题:第8章 用正则表达式进行匹配

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