精华内容
下载资源
问答
  • Perl 正则表达式正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。Perl语言的正则表达式功能非常强大...

    Perl 正则表达式

    正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。

    Perl语言的正则表达式功能非常强大,基本上是常用语言中最强大的,很多语言设计正则式支持的时候都参考Perl的正则表达式。

    Perl的正则表达式的三种形式,分别是匹配,替换和转化:

    匹配:m//(还可以简写为//,略去m)

    替换:s///

    转化:tr///

    这三种形式一般都和 =~ 或 !~ 搭配使用, =~ 表示相匹配,!~ 表示不匹配。

    匹配操作符

    匹配操作符 m// 用于匹配一个字符串语句或者一个正则表达式,例如,要匹配 标量 $bar 中的 "run",代码如下所示:

    实例

    #!/usr/bin/perl$bar="I am runoob site. welcome to runoob site.";if($bar=~/run/){print"第一次匹配\n";}else{print"第一次不匹配\n";}$bar="run";if($bar=~/run/){print"第二次匹配\n";}else{print"第二次不匹配\n";}

    执行以上程序,输出结果为:

    第一次匹配

    第二次匹配

    模式匹配修饰符

    模式匹配有一些常用的修饰符,如下表所示:

    修饰符描述

    i忽略模式中的大小写

    m

    多行模式

    o仅赋值一次

    s单行模式,"."匹配"\n"(默认不匹配)

    x忽略模式中的空白

    g全局匹配

    cg全局匹配失败后,允许再次查找匹配串

    正则表达式变量

    perl处理完后会给匹配到的值存在三个特殊变量名:

    $`:匹配部分的前一部分字符串

    $&:匹配的字符串

    $':还没有匹配的剩余字符串

    如果将这三个变量放在一起,你将得到原始字符串。

    实例如下:

    实例

    #!/usr/bin/perl$string="welcome to runoob site.";$string=~m/run/;print"匹配前的字符串:$`\n";print"匹配的字符串: $&\n";print"匹配后的字符串:$'\n";

    执行以上程序输出结果为:

    匹配前的字符串: welcome to

    匹配的字符串: run

    匹配后的字符串: oob site.

    替换操作符

    替换操作符 s/// 是匹配操作符的扩展,使用新的字符串替换指定的字符串。基本格式如下:

    s/PATTERN/REPLACEMENT/;

    PATTERN 为匹配模式,REPLACEMENT 为替换的字符串。

    例如我们将以下字符串的 "google" 替换为 "runoob":

    实例

    #!/usr/bin/perl$string="welcome to google site.";$string=~s/google/runoob/;print"$string\n";

    执行以上程序输出结果为:

    welcome to runoob site.

    替换操作修饰符

    替换操作修饰符如下表所示:

    修饰符描述

    i如果在修饰符中加上"i",则正则将会取消大小写敏感性,即"a"和"A" 是一样的。

    m默认的正则开始"^"和结束"$"只是对于正则字符串如果在修饰符中加上"m",那么开始和结束将会指字符串的每一行:每一行的开头就是"^",结尾就是"$"。

    o表达式只执行一次。

    s如果在修饰符中加入"s",那么默认的"."代表除了换行符以外的任何字符将会变成任意字符,也就是包括换行符!

    x如果加上该修饰符,表达式中的空白字符将会被忽略,除非它已经被转义。

    g替换所有匹配的字符串。

    e替换字符串作为表达式

    转化操作符

    以下是转化操作符相关的修饰符:

    修饰符描述

    c转化所有未指定字符

    d删除所有指定字符

    s把多个相同的输出字符缩成一个

    以下实例将变量 $string 中的所有小写字母转化为大写字母:

    #!/usr/bin/perl

    $string = 'welcome to runoob site.';

    $string =~ tr/a-z/A-z/;

    print "$string\n";

    执行以上程序输出结果为:

    WELCOME TO RUNOOB SITE.

    以下实例使用 /s 将变量 $string 重复的字符删除:

    实例

    #!/usr/bin/perl$string='runoob';$string=~tr/a-z/a-z/s;print"$string\n";

    执行以上程序输出结果为:

    runob

    更多实例:$string =~ tr/\d/ /c; # 把所有非数字字符替换为空格

    $string =~ tr/\t //d; # 删除tab和空格

    $string =~ tr/0-9/ /cs # 把数字间的其它字符替换为一个空格。

    更多正则表达式规则

    表达式 描述

    .匹配除换行符以外的所有字符

    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字符 的字符串

    abc匹配含有 abc 的字符串

    (pattern) () 这个符号会记住所找寻到的字符串,是一个很实用的语法.第一个 () 内所找到的字符串变成 $1 这个变量或是 \1 变量,第二个 () 内所找到的字符串变成 $2 这个变量或是 \2 变量,以此类推下去.

    /pattern/ii 这个参数表示忽略英文大小写,也就是在匹配字符串的时候,不考虑英文的大小写问题.

    \ 如果要在 pattern 模式中找寻一个特殊字符,如 "*",则要在这个字符前加上 \ 符号,这样才会让特殊字符失效

    展开全文
  • 正则表达式两篇:本文是对Perl正则的一点扩展,主要内容是使用qr//创建正则对象,以及一些其它的技巧。qr//创建正则对象因为可以在正则模式中使用变量替换,所以我们可以将正则中的一部分表达式事先保存在变量中。...

    正则表达式两篇:

    本文是对Perl正则的一点扩展,主要内容是使用qr//创建正则对象,以及一些其它的技巧。

    qr//创建正则对象

    因为可以在正则模式中使用变量替换,所以我们可以将正则中的一部分表达式事先保存在变量中。例如:

    $str="hello worlds gaoxiaofang";

    $pattern="w.*d";

    $str =~ /$pattern/;

    print "$&\n";

    但是,这样缺陷很大,在保存正则表达式的变量中存放的特殊字符要防止有特殊意义。例如,当使用m//的方式做匹配分隔符时,不能在变量中保存/,除非转义。

    perl提供了qr/pattern/的功能,它把pattern部分构建成一个正则表达式对象,然后就可以:

    在正则表达式中直接引用这个对象

    可以将这个对象保存到变量中,通过引用变量的方式来引用这个已保存好的正则对象

    将引用变量插入到其它模式中构建更复杂的正则表达式

    其中:

    qr//的定界符斜线可以替换为其它符号,例如对称的括号类qr() qr{} qr<> qr[],一致的符号类qr%% qr## qr!! qr$$ qr"" qr''等。

    但是使用单引号作为定界符时比较特殊(即qr'pattern'),它会将pattern部分使用单引号的方式去解析,例如变量$var无法替换,而是表示4个字符。但是正则表达式的元字符仍然起作用,例如$仍然表示行尾。

    $str="hello worlds gaoxiaofang";

    # 直接作为正则表达式

    $str =~ qr/w.*d/;

    print "$&\n";

    # 保存为变量,再作为正则表达式

    $pattern=qr/w.*d/;

    $str =~ $pattern; # (1)

    $str =~ /$pattern/; # (2)

    print "$&\n";

    # 保存为变量,作为正则表达式的一部分

    $pattern=qr/w.*d/;

    $str =~ /hel.* $pattern/;

    print "$&\n";

    还允许为这个正则对象设置修饰符,比如忽略大小写的匹配修饰符为i,这样在真正匹配的时候,就只有这一部分正则对象会忽略大小写,其余部分仍然区分大小写。

    $str="HELLO wORLDs gaoxiaofang";

    $pattern=qr/w.*d/i; # 忽略大小写

    $str =~ /HEL.* $pattern/; # 匹配成功,$pattern部分忽略大小写

    $str =~ /hel.* $pattern/; # 匹配失败

    $str =~ /hel.* $pattern/i; # 匹配成功,所有都忽略大小写

    qr如何构建正则对象

    输出qr构建的正则引用,看看是怎样的结构:

    $patt1=qr/w.*d/;

    print "$patt1\n";

    $patt2=qr/w.*d/i; # 加上修饰符i

    print "$patt2\n";

    $patt3=qr/w.*d/img; # 加上修饰符img

    print "$patt3\n";

    上面的print将输出如下结果:

    (?^:w.*d)

    (?^i:w.*d)

    (?^mi:w.*d)

    qr的作用实际上就是在我们给定的正则pattern基础上加上(?^:)并带上一些修饰符,得到的结果总是(?^FLAGS:pattern)。

    但是上面patt3的修饰符g不见了。先可以看看(?^:)的作用:非捕获分组,并重置修饰符。重置为哪些修饰符?对于(?^FLAGS:)来说,只有这些修饰符"alupimsx"是可用的,即(?^alupimsx:):

    如果给定的修饰符不在这些修饰符内,则不被识别,有时候会报错

    如果给定的修饰符属于这几个修饰符,那么没有给定的修饰符部分将采用默认值(不同版本可能默认是否开启的值不同)

    所以上面的g会被丢弃,甚至在进一步操作这个正则引用时,会报错。

    既然qr给pattern部分加上了(?^:),那么当它们插入到其它正则中的时候,就能保证这一段是独立的,不受全局修饰符影响的模式。

    $patt1=qr/w.*d/im;

    $patt2=qr/hel.*d $patt1/i;

    print "$patt2\n"; # 输出:(?^i:hel.*d (?^mi:w.*d))

    正则引用作为标量的用法

    既然qr//创建的正则对象引用是一个标量,那么标量可以出现的地方,正则引用就可以出现。例如,放进hash结构,数组结构。

    例如,放进数组中形成一个正则表达式列表,然后给定一个待匹配目标,依次用列表中的这些模式去匹配。

    use v5.10.1;

    my @patterns = (

    qr/(?:Willie )?Gilligan/,

    qr/Mary Ann/,

    qr/Ginger/,

    qr/(?:The )?Professor/,

    qr/Skipper/,

    qr/Mrs?. Howell/,

    );

    my $name = 'Ginger';

    foreach my $pattern ( @patterns ) {

    if( $name =~ /$pattern/ ) {

    say "Match!";

    print "$pattern";

    last;

    }

    }

    还可以将这些正则引用放进hash中,为每个pattern都使用key来标识一下,例如pattern1是用来匹配什么的:

    use v5.10.1;

    my %patterns = (

    Gilligan => qr/(?:Willie )?Gilligan/,

    'Mary Ann' => qr/Mary Ann/,

    Ginger => qr/Ginger/,

    Professor => qr/(?:The )?Professor/,

    Skipper => qr/Skipper/,

    'A Howell' => qr/Mrs?. Howell/,

    );

    my $name = 'Ginger';

    my( $match ) = grep { $name =~ $patterns{$_} } keys %patterns;

    say "Matched $match" if $match;

    上面将grep语句的结果赋值给了一个标量,所以如果有多个Pattern能匹配$name,多次执行,$match的值将可能会不一样。

    构建复杂的正则表达式

    有了qr,就可以将正则表达式细化成一小片一小片,然后组合起来。例如:

    my $howells = qr/Thurston|Mrs/;

    my $tagalongs = qr/Ginger|Mary Ann/;

    my $passengers = qr/$howells|$tagalongs/;

    my $crew = qr/Gilligan|Skipper/;

    my $everyone = qr/$crew|$passengers/;

    就像RFC 1738中对URL各个部分的解剖,如果转换成Perl正则,大概是这样的(了解即可):

    # 可复用的基本符号类

    my $alpha = qr/[a-z]/;

    my $digit = qr/\d/;

    my $alphadigit = qr/(?i:$alpha|$digit)/;

    my $safe = qr/[\$_.+-]/;

    my $extra = qr/[!*'\(\),]/;

    my $national = qr/[{}|\\^~\[\]`]/;

    my $reserved = qr|[;/?:@&=]|;

    my $hex = qr/(?i:$digit|[A-F])/;

    my $escape = qr/%$hex$hex/;

    my $unreserved = qr/$alpha|$digit|$safe|$extra/;

    my $uchar = qr/$unreserved|$escape/;

    my $xchar = qr/$unreserved|$reserved|$escape/;

    my $ucharplus = qr/(?:$uchar|[;?&=])*/;

    my $digits = qr/(?:$digit){1,}/;

    # 可复用的URL组成元素

    my $hsegment = $ucharplus;

    my $hpath = qr|$hsegment(?:/$hsegment)*|;

    my $search = $ucharplus;

    my $scheme = qr|(?i:https?://)|;

    my $port = qr/$digits/;

    my $password = $ucharplus;

    my $user = $ucharplus;

    my $toplevel = qr/$alpha|$alpha(?:$alphadigit|-)*$alphadigit/;

    my $domainlabel = qr/$alphadigit|$alphadigit(?:$alphadigit|-)*$alphadigit/x;

    my $hostname = qr/(?:$domainlabel\.)*$toplevel/;

    my $hostnumber = qr/$digits\.$digits\.$digits\.$digits/;

    my $host = qr/$hostname|$hostnumber/;

    my $hostport = qr/$host(?::$port)?/;

    my $login = qr/(?:$user(?::$password)\@)?/;

    my $urlpath = qr/(?:(?:$xchar)*)/;

    然后我们就可以用上面看上去无比复杂的正则表达式去匹配一个路径是否是合格的http url:

    use v5.10.1;

    my $httpurl = qr|$scheme$hostport(?:/$hpath(?:\?$search)?)?|;

    while( <> ) {

    say if /$httpurl/;

    }

    正则表达式模块

    上面构建的正则太复杂了,很多常用的正则表达式别人已经造好了轮子,我们直接拿来用就行了。例如,Regexp::Common模块,提供了很多种已经构建好的正则表达式。

    首先安装这个模块:

    sudo cpan -i Regexp::Common

    Regexp::Common - Provide commonly requested regular expressions

    Regexp::Common::CC - provide patterns for credit card numbers.

    Regexp::Common::SEN - provide regexes for Social-Economical Numbers.

    Regexp::Common::URI - provide patterns for URIs.

    Regexp::Common::URI::RFC1035 - Definitions from RFC1035;

    Regexp::Common::URI::RFC1738 - Definitions from RFC1738;

    Regexp::Common::URI::RFC1808 - Definitions from RFC1808;

    Regexp::Common::URI::RFC2384 - Definitions from RFC2384;

    Regexp::Common::URI::RFC2396 - Definitions from RFC2396;

    Regexp::Common::URI::RFC2806 - Definitions from RFC2806;

    Regexp::Common::URI::fax - Returns a pattern for fax URIs.

    Regexp::Common::URI::file - Returns a pattern for file URIs.

    Regexp::Common::URI::ftp - Returns a pattern for FTP URIs.

    Regexp::Common::URI::gopher - Returns a pattern for gopher URIs.

    Regexp::Common::URI::http - Returns a pattern for HTTP URIs.

    Regexp::Common::URI::news - Returns a pattern for file URIs.

    Regexp::Common::URI::pop - Returns a pattern for POP URIs.

    Regexp::Common::URI::prospero - Returns a pattern for prospero URIs.

    Regexp::Common::URI::tel - Returns a pattern for telephone URIs.

    Regexp::Common::URI::telnet - Returns a pattern for telnet URIs.

    Regexp::Common::URI::tv - Returns a pattern for tv URIs.

    Regexp::Common::URI::wais - Returns a pattern for WAIS URIs.

    Regexp::Common::_support - Support functions for Regexp::Common.

    Regexp::Common::balanced - provide regexes for strings with balanced parenthesized delimiters or arbitrary delimiters.

    Regexp::Common::comment - provide regexes for comments.

    Regexp::Common::delimited - provides a regex for delimited strings

    Regexp::Common::lingua - provide regexes for language related stuff.

    Regexp::Common::list - provide regexes for lists

    Regexp::Common::net - provide regexes for IPv4, IPv6, and MAC addresses.

    Regexp::Common::number - provide regexes for numbers

    Regexp::Common::profanity - provide regexes for profanity

    Regexp::Common::whitespace - provides a regex for leading or trailing whitescape

    Regexp::Common::zip - provide regexes for postal codes.

    这些正则表达式是通过hash进行嵌套的,hash的名称为%RE。例如模块Regexp::Common::URI::http,它提供的是HTTP URI的正则表达式,它嵌套了两层,第一层的key为URI,这个key对应的值是第二层hash,第二层hash的key为HTTP,于是可以通过$RE{URI}{HTTP}的方式获取这个正则。

    例如,匹配一个http url是否合理:

    use Regexp::Common qw(URI);

    while( <> ) {

    print if /$RE{URI}{HTTP}/;

    }

    在学习shell脚本的时候,经常有人写匹配IPV4的正则表达式,现在我们可用直接从Regexp::Common::net中获取:

    use Regexp::Common qw(net);

    $ipv4=$RE{net}{IPv4};

    print $ipv4;

    以下是结果:

    (?:(?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2}))

    只是需要注意的是,在真正匹配的时候应该将得到的引用锚定起来,否则对318.99.183.11进行匹配的时候也会返回true,因为18.99.183.11是符合匹配结果的。所以,对前后都加上锚定,例如:

    $ipv4 =~ /^$RE{net}{IPv4}$/;

    将上面的ipv4正则改造一下(去掉非捕获分组的功能),让它适用于shell工具中普遍支持的扩展正则:

    (25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})(\.(25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})){3}

    默认情况下,Regexp::Common的各个模块是没有开启捕获功能的。如果要使用$1、$N这种引用,需要使用{-keep}选项,至于每个分组捕获的是什么内容,需要参考帮助文档的说明。

    例如:

    use Regexp::Common qw(number);

    while( <> ) {

    say $1 if /$RE{num}{int}{ -base => 16 }{-keep}/;

    }

    展开全文
  • Perl正则表达式在PHP的实现达成,我们要使用PCRE相关的正则表达式函数,那么具体的都有什么函数呢?这里我们向你介绍4个,希望对你有所帮助。Perl正则表达式在PHP的实现所使用的函数介绍:1、preg_match :函数格式...

    Perl正则表达式在PHP的实现达成,我们要使用PCRE相关的正则表达式函数,那么具体的都有什么函数呢?这里我们向你介绍4个,希望对你有所帮助。

    Perl正则表达式在PHP的实现所使用的函数介绍:

    1、preg_match :

    函数格式:int preg_match(string pattern, string subject,array[matches]);

    这个函数会在string中使用pattern表达式来匹配,如果给定了[regs],就会将string记录到[regs][0]中,[regs][1]代表使用括号"()"记录下来的***个字符串,[regs][2]代表记录下来的第二个字符串,以此类推。preg如果在string中找到了匹配的pattern,就会返回"true",否则返回"false"。

    2、preg_replace :

    函数格式:mixed preg_replace(mixed pattern, mixed replacement, mixed subject);

    这个函数会使用将string中符合表达式pattern的字符串全部替换为表达式replacement。如果replacement中需要包含pattern的部分字符,则可以使用"()"来记录,在replacement中只是需要用"\\1"来读取。

    3、preg_split :

    函数格式:arraypreg_split(string pattern, string subject, int [limit]);

    这个函数和函数split一样,区别仅在与split可以使用简单正则表达式来分割匹配的字符串,而preg_split使用完全的Perl兼容正则表达式。第三个参数limit代表允许返回多少个符合条件的值。

    4、preg_grep :

    函数格式:arraypreg_grep(string patern ,arrayinput);

    这个函数和preg_match功能基本上,不过preg_grep可以将给定的数组input中的所有元素匹配,返回一个新的数组。

    下面举一个例子,比如我们要检查Email地址的格式是否正确:

    Perl正则表达式在PHP的实现实例:<?php

    functionemailIsRight($email) {

    if(preg_match("^[_\.0-9a-z

    0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$",$email)) {

    return1;

    }

    return0;

    }

    if(emailIsRight(\'y10k@963.net\')) echo \'正确
    \';

    if(!emailIsRight(\'y10k@fffff\')) echo \'不正确
    \';

    ?>

    上面的程序会输出"正确
    不正确"。

    Perl正则表达式在PHP的实现相关内容就向你介绍到这里,希望对你了解和学习Perl正则表达式在PHP的实现有所帮助。

    【编辑推荐】

    【责任编辑:李彦光 TEL:(010)68476606】

    点赞 0

    展开全文
  • perl 正则表达式

    2015-12-10 15:49:33
    perl 正则表示式,让你真正的理解perl 正则更容易和方便的学习。
  • PERL里正则表达式的简介,适合喜欢学习perl正则的朋友。
  • perl正则表达式详解

    2011-09-06 01:43:47
    perl 正则表达式 perl 正则表达式 perl 正则表达式
  • perl正则表达式就是通过一串特别设计的字符串,可以按照我们的需求匹配、替换、转化目标字符串。本文主要是对一些常用的正则表达以及语法的总结以及举例,供广大喜爱Perl的同学交流学习。操作符:=~ 或 != 分别表示...

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

    操作符:

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

    $regx = "perl";

    $string = "I like perl";

    if ($string =~ $regx){

    print "match";}

    匹配、替换、转化

    匹配:m//;或//;

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

    替换:s///

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

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

    转化:tr///

    如:$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正则表达式讲解

    2010-08-10 13:56:13
    perl 正则表达式 讲解perl 正则表达式 讲解perl 正则表达式 讲解
  •  匹配任意一个字符,(除了换行符\n) [\d\D] 表示任何数字或非数字,即匹配任意字符,包括换行符 [^\d\D] 匹配既不是数字也不是非数字的字符,即什么都不匹配 用正则表达式匹配 /fred/ 以双斜线为定界符,可以...
  • perl正则表达

    2013-08-21 17:58:11
    perl正则表达式,入门级学习资料,走过路过不要错过
  • 有关perl正则表达式的一些杂项,有需要的朋友可以参考下
  • Perl正则表达式

    2015-02-15 14:39:19
    =~Perl正则表达式匹配运算符,左边是待匹配字符串,右边是Perl正则表达式,匹配结果设置在$1,$2等变量中,在scaler上下文中,成功匹配返回匹配个数,否则返回false。例如$var=~/foo/; !~Perl正则表达式匹配运算符,...
  • Perl正则表达式超详细教程

    万次阅读 多人点赞 2018-09-15 12:10:12
    前言 想必学习perl的人,对基础正则表达式都已经熟悉,所以学习perl正则...还记得当初把《精通正则表达式》的书看了一遍,把perl正则也学了个七七八八,但是学完后却不知道怎么去使用perl正则,虽然里面也介绍了一点...
  • perl正则表达式

    2014-06-01 23:29:31
    本文和大家重点讨论一下Perl正则表达式的概念,Perl正则表达式,就是一串特别设计过的字符串,相信通过本文的学习你对Perl正则表达式的概念有初步的认识。 1.Perl正则表达式语法 所谓Perl正则表达式,就是一串...
  • Perl正则表达式讲解

    2013-11-01 09:10:44
    Perl正则表达式讲解_摘自Perl编程详解.pdf
  • 正则表达式是Perl语言的特色,基本的语法不是很难,但是编写一个符合需求、高效的正则表达式,还是有...下面这篇文章主要给大家介绍了关于强大的Perl正则表达式的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
  • perl正则表达式学习资料,详细阐述perl正则表达式的使用,说明等等,对文本分析非常有用
  • Perl正则表达式引用

    2018-10-04 19:57:00
    本文是对Perl正则的一点扩展,主要内容是使用qr//创建正则对象,以及一些其它的技巧。 qr//创建正则对象 因为可以在正则模式中使用变量替换,所以我们可以将正则中的一部分表达式事先保存在变量中。例如: $str=...
  • perl正则表达式练习

    2019-08-31 19:54:16
    perl正则表达式初级练习网站:https://regexone.com/
  • 使用python, C#, ultraedit中的 perl正表达表示式可以正确匹配, 但在vi中就死活不行 据说vi使用的正则表达式遵循posix标准,和unix下的 grep, awk,sed是一样的, 《OReilly.Learning.the.vi.and.Vim.Editors.7th....
  • Perl正则表达式语法 所谓Perl正则表达式,就是一串特别设计过的字符串,可以按照你的意图用匹配操作寻找你要求的目标。我这里不是Perl手册,也不是教科书,所以我从例子开始,具体的完整说明还请查手册。 1.1转义...
  • 正则表达式是Perl语言的特色基本的语法不是很难但是编写一个符合需求高效的正则表达式还是有一些挑 战的下 这篇文章主要给大家介绍了关于强大的Perl正则表达式的相关资料需要的朋友可以参考借鉴下 来 一起看看吧 ...
  • Perl 正则表达式说明

    2010-12-29 13:49:24
    一个关于Perl正则表达式的介绍文件。不敢说太详细,还是对于初学者有一些作用。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,179
精华内容 2,871
关键字:

perl正则