我需要下面的圖案內忽略空間之間的空白無法忽略文本
XXXXX-XXXXX
其中X是0之間的任何數目至9我有嘗試了以下正則表達式:(\d{2}+)(|-)(\d{3}+)(|-)(\d{5})
。如果兩者之間存在任何空間,則這不起作用。
XXX XXXXX XX
XXXXX-XX XXX
X X-XXX-XXXXX
我使用這個表達式在Matlab。
我需要下面的圖案內忽略空間之間的空白無法忽略文本
XXXXX-XXXXX
其中X是0之間的任何數目至9我有嘗試了以下正則表達式:(\d{2}+)(|-)(\d{3}+)(|-)(\d{5})
。如果兩者之間存在任何空間,則這不起作用。
XXX XXXXX XX
XXXXX-XX XXX
X X-XXX-XXXXX
我使用這個表達式在Matlab。
如果-
是強迫,你可以使用
[ ]*((?:[ ]*\d){2}[ ]*-[ ]*(?:[ ]*\d){3}-[ ]*(?:[ ]*\d){5})
或
\s*((?:\s*\d){2}\s*-\s*(?:\s*\d){3}-\s*(?:\s*\d){5})
在MATLAB
str = '11 - 1 11- 111 11 11-111-11 111 1 1- 111-11111';
expression = '[ ]*((?:[ ]*\d){2}[ ]*-[ ]*(?:[ ]*\d){3}-[ ]*(?:[ ]*\d){5})';
matchStr = regexp(str,expression,'match')
輸出
matchStr =
{
[1,1] = 11 - 1 11- 111 11
[1,2] = 11-111-11 111
[1,3] = 1 1- 111-11111
}
對於精確匹配10位數字,您可以使用
((?:[- ]*\d){10})
您可以從字符串中去除空格,則處理前,讓你的結果是自由空間。試試這個:
string = '99-999-99999 8 8 - 8 8 8 - 8 8 8 8 8 77- 777 -77777 6 6 - 6 6 6 - 6 6 6 6 6 BR-549 55-555-55555 rubber meets the road 444 - 444 - 44444';
without_spaces = regexprep(string, '\s+', '')
matched = regexp(without_spaces, '\d{2}-\d{3}-\d{5}','match')
結果:
matched =
{
[1,1] = 99-999-99999
[1,2] = 88-888-88888
[1,3] = 77-777-77777
[1,4] = 66-666-66666
[1,5] = 55-555-55555
[1,6] = 44-444-44444
}
你想搭配什麼?它是10位數字嗎? – rock321987
是10號,中間有兩個連字符。 –