Technical Knowledge

目次

正規表現

[開発]

先読み。

肯定先読み

my $str = "abcdabce";
$str =~ s/ab(?=ce)/X/g;    # abcdXce

'ce' が続く 'ab' に一致する。また、'ce' 部分は処理済みとならない。

否定先読み

my $str = "abcdabce";
$str =~ s/ab(?!ce)/X/g;    # Xcdabce

'ce' が続かない 'ab' に一致する。


<2009-04-08 水>

後読み。

肯定後読み

my $str = "ceabcdab";
$str =~ s/(?<=ce)ab/X/g;    # ceXcdab

'ce' に続く 'ab' に一致する。また、'ce' 部分は処理済みとならない。

否定後読み

my $str = "ceabcdab";
my $str =~ s/(?<!ce)ab/X/g;    # ceabcdX

'ce' に続かない 'ab' に一致する。


<2010-03-16 火>

最長・最短一致。

最長一致(デフォルト)

my $str = "abbbb";
$str =~ s/ab+/X/g;    # X
my $str2 = "abbbb";
$str2 =~ s/ab*/X/g;    # X

もっとも長くなるパターンに一致する。

最短一致

my $str = "abbbb";
$str =~ s/ab+?/X/g;    # Xbbb
my $str2 = "abbbb";
$str2 =~ s/ab*?/X/g;    # Xbbbb

もっとも短くなるパターンに一致する。


<2010-03-16 火>

Date: 2021-10-03