正则表达式

正则表达式之元字符:

    .匹配除/n外的任意一个字符

    /转义符

正则表达式之量词:

    {3}        匹配前一单元的三个

 

    *?{0, }?  匹配前一单元的零个或多个 

 

    +?{1, }?  匹配前一单元的一个或多个 

 

    ??{0,1}?  匹配前一单元的零个或一个 

 

    * {0, }    匹配前一单元的多个或零个贪

 

    + {1, }    匹配前一单元的多个或一个贪

 

    ? {0,1}    匹配前一单元的一个或零个贪

 

正则表达式之编组:

    ()     编组且触发记忆

 

    (?:)  编组但不触发记忆

 

正则表达式之多个选择:

    |

正则表达式之文法和算符优先级:

    '()', '(?: )' >

'*', '*?', '+', '+?', '?','??', '{}', '{}?' >

 

'' >

'|'

    <regexp>-> <regexp>'|'<concat> |<concat>

 

    <concat>-> <concat><repeat> |<repeat>

 

    <repeat>-> <repeat>('*' | '+' | '?' |'{'<int>'}') | <paren>

 

    <paren>    -> '('<regexp>')' |'(?:'<regexp>')' | <char>

 

   

正则表达式之字符类:

    [abcwxyz]== [a-cw-z]

    /d== [0-9]

    /D== [^0-9]

    /w== [a-zA-Z0-9_]

    /W== [^a-zA-Z0-9_]

    /s== [/f/t/n/r ]

    /S== [^/f/t/n/r ]

 

正则表达式之选项修饰符:

    /i使匹配大小写不敏感

    /s使.匹配任意字符,包含'/n',等价于[/d/D]

 

    /x允许正则表达式中用空白和注释来增强可读性,空格文字和制表符文字等等将被忽略,只能用/s、/t等表示。

 

    /m匹配多行目标串时,改^和$的意义为行首锚和行尾锚

 

    /g无重叠全局替换修饰符

正则表达式之锚:

    ^ 串首锚

    $ 串尾锚

    /b单词边界锚参考/w

    /B非单词边界锚

正则表达式之绑定算子:

    =~非赋值运算符也,绑定运算符也,It's曰ing:不处理$_了,处理我左边的那个家伙

 

正则表达式插值:

   双引插值规则

 

正则表达式之匹配变量

    ()不仅用于正则表达式的编组,也触发匹配引擎的记忆,引擎会将整个匹配段中与括号内正则表达式对应 的那部分存入记忆体内。

 

自1编号,引用以$1$2...

 

   记忆至下一次匹配成功时结束

 

    $&$MATCH    整个匹配段

    $`$PREMATCH 匹配段之前的子串

    $'$POSTMATCH匹配段之后的子串

正则表达式举例:

    /^fred|barney$/要么以fred打头,要么以barney结尾的串

 

    /^(fred|barney)$/

    /(wilma|pebbles?)/

    /^fred|barney$/m

   

正则表达式之文本处理之替换:

   分隔符规则:

 

        s#^https://#http://#;

        s{fred}{barney};

        s[fred](barney);

        s<fred>#barney#;

   绑定算子:

 

        =~

   大小写切换:

 

        /U此处起至/E全部大写

        /L此处起至/E全部小写

        /u下一个字母大写

        /l下一个字母小写

   举例:

 

        s/(bush|mandola)//u/L$1/ig

正则表达式之split算子

   语法:

 

        split/PATTERN/, EXPR, LIMIT

       /PATTERN/分割EXPR,最多分成LIMIT

 

       LIMIT省略且尾部为空串,则丢弃它

 

       LIMIT为负值,则视其为无穷大

 

        EXPR缺省为$_

 

        /PATTERN/缺省为//s+/

 

 

正则表达式之列表环境下的m//:

 

   返回引擎记忆体中的变量。

 

    my$data = "Barney Rubble Fred Flintstone Wilma Flintstone";

    my%last_name = ($data =~ /(/w+)/s+(/w+)/g);

    my@arr = ($data =~ /(/w+)/s+(/w+)/g);

   

 

正则表达式之匹配多行文本:

    ^$普通模式下是串首锚和串尾锚,在/m(多行模式)下为行首锚和行尾锚

 

    /A匹配串首,/Z匹配串尾

    /^nat/m=== /^nat|/nnat/

   

    openFILE, $filename

        ordie "Can't open '$filename': $!";

    my$lines = join '', <FILE>;

    $lines=~ s/^/$filename: /gm;

   

正则表达式之更新多个文件:

   钻石符号<>的魔力:他会自动地为你打开和关闭在命令行指定的一系列文件,

 

   若命令行没有指定任何文件名,

 

   他就打开标准输入。

 

    $^I会改变<>的行为,若$^I不是undef,则<>会将文件重命名以"文件名" .

 

    "$^I",然后创建名为"文件名"的文件,然后打开重命名后的文件以读,

 

   打开新建的文件以写。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值