對不起,我的問題,我在正則表達式新的,我要找一個聰明的方式來拆分此模式A007B001C017D021E041
的字符串轉換爲A
,007
,B
,001
,C
,017
,D
,021
, E
,041
。換句話說,輸入是重複五次的[string][threeDigits]
模式,並且對於每次重複,輸出是分開[string]
,[threeDigits]
。你能否給出一個使用matlab內建函數正則表達式的建議?分割交替串號appearence
謝謝。
對不起,我的問題,我在正則表達式新的,我要找一個聰明的方式來拆分此模式A007B001C017D021E041
的字符串轉換爲A
,007
,B
,001
,C
,017
,D
,021
, E
,041
。換句話說,輸入是重複五次的[string][threeDigits]
模式,並且對於每次重複,輸出是分開[string]
,[threeDigits]
。你能否給出一個使用matlab內建函數正則表達式的建議?分割交替串號appearence
謝謝。
一種可能解決方案:
tokens = regexp(str, '([a-zA-z])(\d\d\d)', 'tokens');
array = [tokens{:}];
基於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 ]"'
@yacoob對不起,在給定的例子中有一個錯誤。我糾正了,'A007B001C017D021E041'。沒有'CB'字符串只是'B'。 – Thoth
開頭應該是'A007B001'吧? – DVarga
@DVarga是的,你是對的。 – Thoth