我需要下面的图案内忽略空间之间的空白无法忽略文本
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号,中间有两个连字符。 –