$test="111222333345555";
同じ繰り返し桁の数字を 't'に置き換えるにはどうすればよいですか?正規表現を使用して置換えを実現する方法は?
つまり、正規表現を使用して"11t22t333t4555t"
を取得する方法は?
$test="111222333345555";
同じ繰り返し桁の数字を 't'に置き換えるにはどうすればよいですか?正規表現を使用して置換えを実現する方法は?
つまり、正規表現を使用して"11t22t333t4555t"
を取得する方法は?
続くその発生箇所が、最後の1、すべての続いた数字によってそれを置き換えるでしょう:
#!/usr/bin/perl
use Modern::Perl;
my $test = "11222333345555";
$test =~ s/((\d)\2*)\2/$1t/g;
say $test;
出力:
1t22t333t4555t
説明:
( : start group 1
( : start group 2
\d : a digit
) : end group 2
\2* : backreference on group 2 (ie: same digit) 0 or more times
) : end group 1
\2 : backreference on group 2
"(\d)(\1+?)\1(?!\1)" [1]
を"\1\2t" [2]
に置き換えます。
は[1]
では、あなたが自分自身(\1
)が続き、何か((?!\1)
)に続いて自身で何度でも(\1+?
を)続い桁(\d
)を、一致します。
そして2つの以上の同じ連続した数字がある場合、交換したい場合は、"t"
私は私がfixed.Sorry、 ' "333t3"'と ' "555トン"' – Faibbus
@Faibbusああを持ってする方法を見つけることができません。.. – partida