无法忽略文本之间的空格

时间:2016-05-21 10:04:48

标签: regex matlab

我需要忽略下面模式中的空格

  

XXXXX-XXXXX

其中 x 是0到9之间的任何数字。我尝试了以下正则表达式:(\d{2}+)(|-)(\d{3}+)(|-)(\d{5})。如果中间存在任何空间,则无效,例如

  

xx - x xx- xxx xx
  xx-xxx-xx xxx
  x x- xxx-xxxxx

我在Matlab中使用这个正则表达式。

2 个答案:

答案 0 :(得分:1)

如果-是强制性的,您可以使用

[ ]*((?:[ ]*\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})

答案 1 :(得分:0)

您可以在处理之前从字符串中删除空格,以使结果无空间。试试这个:

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                                                                                                                                                         
}