Ric*_*k T 6 regex matlab octave pattern-matching maple
我想知道是否有办法在Octave/matlab中进行模式匹配?我知道Maple 10有命令这样做但不确定我需要在Octave/Matlab中做什么.因此,如果一个数字是12341234123412341234模式匹配将是1234.我试图找到重复生成整个字符串的最短模式.
请注意:数字(仅使用数字)不会这么简单.另外,我不会提前知道这个模式(这就是我想要找到的).请参阅下面的Maple 10示例,该示例显示模式未提前知道,但命令找到模式.
Maple 10模式匹配示例:
ns:=convert(12341234123412341234,string);
ns := "12341234123412341234"
StringTools:-PrimitiveRoot(ns);
"1234"
Run Code Online (Sandbox Code Playgroud)
我如何在Octave/Matlab中执行此操作?Ps:我正在使用Octave 3.8.1
Lui*_*ndo 10
要找到重复生成整个字符串的最短模式,可以使用正则表达式,如下所示:
result = regexp(str, '^(.+?)(?=\1*$)', 'match');
Run Code Online (Sandbox Code Playgroud)
一些例子:
>> str = '12341234123412341234';
>> result = regexp(str, '^(.+?)(?=\1*$)', 'match')
result =
'1234'
>> str = '1234123412341234123';
>> result = regexp(str, '^(.+?)(?=\1*$)', 'match')
result =
'1234123412341234123'
>> str = 'lullabylullaby';
>> result = regexp(str, '^(.+?)(?=\1*$)', 'match')
result =
'lullaby'
>> str = 'lullaby1lullaby2lullaby1lullaby2';
>> result = regexp(str, '^(.+?)(?=\1*$)', 'match')
result =
'lullaby1lullaby2'
Run Code Online (Sandbox Code Playgroud)