2013-07-04 58 views
0

使用正则表达式我必须拆分字符串模式并将其展开。在Java中使用正则表达式分割字符串模式

例如:

String Pattern = "rue Richard2" -----> in 2 string 
Substring1 = "rue Richard" , Substring2 = "2" 

但对于像“街 - 理查德2-5”更复杂的字符串模式,我必须拆分并展开:

Substring1 = "rue-Richard " , Substring2 = "2" 
Substring1 = "rue-Richard " , Substring2 = "3" 
Substring1 = "rue-Richard " , Substring2 = "4" 
Substring1 = "rue-Richard " , Substring2 = "5" 

但另一个更复杂的字符串模式像“街 - 理查德2,5,7,11”,我必须拆分并展开:

Substring1 = "rue-Richard." , Substring2 = "2" 
Substring1 = "rue-Richard." , Substring2 = "5" 
Substring1 = "rue-Richard." , Substring2 = "7" 
Substring1 = "rue-Richard." , Substring2 = "11" 
+0

正则表达式看起来不是正确的工具。你可以使用外部库吗? – fge

+0

你能解释一下你的问题吗? – user35443

+0

有一点是肯定的:这个问题不能用一个正则表达式来解决。也许你可以使用正则表达式来分割你的字符串(根据你需要的一个明确定义的规范),但是你需要一些代码来扩展你的街道/ housnumber对。 – lweller

回答

0

的正则表达式,这里将没有帮助,罪ce你有两个任务要做:

  • 从数字分开的非数字;
  • 分析数字。

这一个简单的解决方案是使用Guava's CharMatcher

// DIGIT matches all unicode digits, we don't want that 
private static final CharMatcher DIGITS = CharMatcher.DIGIT 
    .and(CharMatcher.ASCII); 

// find first digit index 
final int index = DIGITS.indexIn(input); 
input.substring(0, index); // part without the digits 
input.substring(index); // part with digits 

然后,你“只”要分析数字的一部分。

+0

谢谢你的提示! – user2547702

相关问题