拆分交替的字符串数字出现

时间:2017-03-28 09:02:36

标签: regex matlab string-parsing

对不起我的问题,我是正则表达式的新手,我正在寻找一种聪明的方法将此模式A007B001C017D021E041的字符串拆分为A007B001C017D021E041。换句话说,输入是[string][threeDigits]模式重复五次,输出是每次重复的分离[string][threeDigits]。您能否使用matlab内置函数的正则表达式提出建议?

感谢。

2 个答案:

答案 0 :(得分:1)

基于python的正则表达式解决方案看起来像这样 - 不知道matlab是否支持相同的正则表达式语法:

$ echo A007B001C017D021E041 | sub '([A-Z])+([0-9]+)' '\1, \2, ' 
A, 007, B, 001, C, 017, D, 021, E, 041, 

我将sub定义为这样的别名:

alias sub='python -c "import sys, re; regex=re.compile(sys.argv[1]); [ sys.stdout.write(regex.sub(sys.argv[2], line)) for line in sys.stdin ]"'

答案 1 :(得分:1)

可能的解决方案:

tokens = regexp(str, '([a-zA-z])(\d\d\d)', 'tokens');
array = [tokens{:}];