美文网首页
用正则表达式处理文本

用正则表达式处理文本

作者: 食梦狸猫 | 来源:发表于2019-03-26 11:28 被阅读0次

利用正则表达式的模式定位部分字符串并做出相应的修改。
m//模式匹配 是查找功能。
s///就是查找并替换的功能

s/barney/fred/;
#把barney替换为fred
  • 用/g进行全局替换
    s///只会进行一次替换。
    s///g会进行所有可能的,不重复的替换

  • 无损替换
    需要同时保留原始字符串和替换后的字符串。
    /r修饰符保留原来字符串变量中的值不变,把替换结果作为替换操作的返回值返回。

my $copy = $original =~ s/\d +ribs?/10/r
  • 大小写转换
    /U转义符把后面的所有字符都转换为大写。
    /L转义符把后面的所有字符都转换为小写。

/l和/u只会影响后面的一个字符

s/(fred | barney)/\u$1/ig;

split操作符

根据给定的模式拆分字符串,用拆分模式扫描指定的字符串并返回字段。如果有两个分隔符连在一起,就会产生空字段。

my @fields = split /separator/,"abc:def::"
#得到("abc","def","")
  • join函数
    join函数和split相反,会把片段结合成一个字符串。
my $x = join ":",4,5,6,7;
#结果是"4:5:6:7"

更强大的正则表达式

  • 非贪婪量词(在贪婪量词后面加?)
    +? 在表示一次或多次的同时,也表示匹配的字符串越短越好
/fred.+barney/
#正则表达式引擎的回溯动作会很繁琐
/fred.+?barney/
  • 跨行的模式匹配
    模式加上/m修饰符后,就可以用来匹配字符串内的每一行。
open FILE,$filename
    or die "can't open!";
my $lines = join ' ',<FILE>;
$lines =~ s/^/$filename: /gm;

从命令行直接编辑

perl -p -i.bak -w -e 's/Randall/Randal/g' fred*.dat

-p让perl自动生成一小段程序。
-i.bak是备份
-w开启警告
-e表面后面的是执行的程序代码

相关文章

  • sed简介

    sed是一个文本流处理器,配合正则表达式用可以实现很多文本处理操作。 和grep一样,sed是一行一行的处理的。s...

  • Java 正则表达式

    正则表达式定义了字符串的模式,可以用来搜索、编辑或处理文本。正则表达式可以用来搜索、编辑或处理文本。Java 正则...

  • 7-文本处理公式和正则表达式

    本章内容 ◆ 各种文本工具来查看、分析、统计文本◆ 文本处理三剑客之grep◆ 正则表达式◆ 扩展正则表达式 抽取...

  • 正则表达式

    Linux中大部分时间都是在处理文本内容,而为了更加快速和自动化的处理文本,我们就需要正则表达式。正则表达式提供了...

  • 2018-04-26正则表达式

    目录: Ⅰ:正则表达式 Ⅱ:作业 作业三:awk文本处理

  • 正则表达式

    正则表达式(Regular Expression,简称regex)作为一种工具,它擅长的领域是文本处理。最基本的用...

  • 用正则表达式处理文本

    利用正则表达式的模式定位部分字符串并做出相应的修改。m//模式匹配 是查找功能。s///就是查找并替换的功能 用/...

  • 【使用Python处理文本2】

    正则表达式 正则表达式是一个强大的文本处理工具,在Linux系统中使用广泛,Linux系统中大部分文本处理工具都支...

  • 2018-06-12

    正则表达式是实现强大、灵活和高效文本处理的关键

  • 正则表达式

    正则表达式 \n\n\n 【5】正则表达式应用——删除空行 启动EditPlus,打开待处理的文本类型文件。 ①、...

网友评论

      本文标题:用正则表达式处理文本

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