Perl Regular Expression - What does gc modifier means?

后端 未结 2 1402
佛祖请我去吃肉
佛祖请我去吃肉 2021-02-07 02:50

I have a regex which matches some text as:

$text =~ m/$regex/gcxs

Now I want to know what \'gc\' modifier means:

I hav

2条回答
  •  没有蜡笔的小新
    2021-02-07 03:10

    The /g modifier is used to remember the "position in a string" so you can incrementally process a string. e.g.

    my $txt = "abc3de";
    while( $txt =~ /\G[a-z]/g )
    {
        print "$&";
    }
    while( $txt =~ /\G./g )
    {
        print "$&";
    }
    

    Because the position is reset on a failed match, the above will output

    abcabc3de
    

    The /c flag does not reset the position on a failed match. So if we add /c to the first regex like so

    my $txt = "abc3de";
    while( $txt =~ /\G[a-z]/gc )
    {
        print "$&";
    }
    while( $txt =~ /\G./g )
    {
        print "$&";
    }
    

    We end up with

    abc3de
    

    Sample code: http://ideone.com/cC9wb

提交回复
热议问题