2010-09-19 53 views
4

我有一個非常簡單的模式輸入字符串 - 大寫字母,整數,大寫字母,整數,...我想分開每個大寫字母和每個整數。我無法弄清楚在Java中執行此操作的最佳方法。如何解析Java中的字符串?有沒有類似於Python的re.finditer()?

我已經嘗試過使用模式和匹配器,然後StringTokenizer regexp,但仍然沒有成功。

這就是我想做的事,在Python所示:

for token in re.finditer("([A-Z])(\d*)", inputString): 
     print token.group(1) 
     print token.group(2) 

對於輸入 「A12R5F28」 的結果將是:

A 

12 

R 

5 

F 

28 

回答

5

你可以在Java中使用正則表達式API和實現相同的功能:

Pattern myPattern = Pattern.compile("([A-Z])(\d+)") 
Matcher myMatcher = myPattern.matcher("A12R5F28"); 
while (myMatcher.find()) { 
     // Do your stuff here 
} 
+0

您的RE具有不對稱的括號) – st0le 2010-09-19 08:02:11

+0

謝謝你,它完美的作品,我的問題是,我是用myMatcher.matches()而不是myMatcher.find() – 2010-09-19 08:06:00

+0

@ St0le - 謝謝,糾正了! – rkg 2010-09-19 08:06:18

2

擴大對拉維的回答....

Pattern myPattern = Pattern.compile("([A-Z])(\\d+)"); 
Matcher myMatcher = myPattern.matcher("A12R5F28"); 
while (myMatcher.find()) { 
    System.out.println(myMatcher.group(1) + "\n" + myMatcher.group(2)); 
} 
相關問題