使用perl表达式查找字符串中的最小模式

mic*_*501 4 perl

我试图在(2个字符串)字符串示例中找到最小模式:

enter code here

 #!/usr/bin/perl
 use warnings;
 use strict;


 my $str1;
 $str1 = 'abbabbabbabbabb'; #  abb is repeating  
 $str1 = 'abababababababa';  #  ab is repeating 
 $str1 = 'abaaaabaaaabaaa';  #  abaaa is repeating
 $str1 = 'bbaabbaabbaabbaa'; #  bbaa is repeating 
Run Code Online (Sandbox Code Playgroud)

它总是2个字符'a'和'b'并且总是有一个模式,没有'a'或'b'的角落情况.任何帮助是极大的赞赏.

谢谢迈克尔

ike*_*ami 6

my ($repeated_pattern) = $str1 =~ /^(.+?)\1+\z/s;
Run Code Online (Sandbox Code Playgroud)