2014-04-16 32 views
1

你好,我想從一個字符串中獲取重複模式的信息。 例如:如何從重複模式的字符串獲取信息?

Matematika 1#1#0 @ FIZIKA 1#1#6 @ Osnovi吶injenernoto proektirane 1#1#5 @ PIK 1#1#6 @ Matematika 2#2#6 @ FIZIKA 2 #2#6 @ Osnovi吶injenernoto proektirane 2#2#4 @

我試着用:

Pattern pattern1 = Pattern.compile("(.+)[@]+"); 
    Pattern pattern2 = Pattern.compile("((.+)[#]+(\\d)[#]+(\\d)[@])+"); 
    Matcher matcher1 = pattern1.matcher("Matematika 1#1#[email protected] 1#1#[email protected] na injenernoto proektirane 1#1#[email protected] 1#1#[email protected] 2#2#[email protected] 2#2#[email protected] na injenernoto proektirane 2#2#[email protected]"); 
    Matcher matcher2 = pattern2.matcher("Matematika 1#1#[email protected] 1#1#[email protected] na injenernoto proektirane 1#1#[email protected] 1#1#[email protected] 2#2#[email protected] 2#2#[email protected] na injenernoto proektirane 2#2#[email protected]"); 


    while(matcher1.find()){ 
     System.out.println(matcher1.group(1)); 
     while (matcher2.find()){ 
      System.out.println(matcher2.group(1) + "\t"); 
      System.out.println(matcher2.group(1) + "\t"); 
      System.out.println(matcher2.group(1) + "\t"); 
     } 

    } 

,但沒有成功。 「pattern2」工作正常,但只有源字符串是:「Matematika 1#1#0 @」....這導致了兩個匹配器的想法。一個用於將字符串分成小字符串,第二個用於獲取信息。

我會很高興聽到任何一種想法,我怎麼能做到這一點。

在此先感謝。

+1

爲String。拆分選項? – oschlueter

+0

而不是。我必須將字符串中的數據保存在二維數組中,我認爲用split創建數組並將它們放入數組中並不實際。 – Altair

+0

你想從這個字符串得到什麼? – Szymon

回答

1

你能做到這樣,使用向後看和前瞻斷言找到你的主題和數字的組,然後使用匹配的組來提取各個部分的每場比賽:

Pattern p = Pattern.compile("(?=[^@])(.+?)#(\\d)#(\\d)([email protected])"); 
Matcher m = p.matcher("Matematika 1#1#[email protected] 1#1#[email protected] na injenernoto proektirane 1#1#[email protected] 1#1#[email protected] 2#2#[email protected] 2#2#[email protected] na injenernoto proektirane 2#2#[email protected]"); 
while(m.find()) 
{ 
    if (m.groupCount() == 3) { 
     System.out.println(m.group(1)); 
     System.out.println(m.group(2)); 
     System.out.println(m.group(3)); 
    } 
} 
+1

非常感謝。 – Altair

相關問題