2012-11-30 103 views
2

所以我是新來的Java和正則表達式有一些麻煩。我試圖在一個字符串中找到有翼的評論(/* */)和行尾註釋(//),以便我可以沿着它們拆分並將其放入數組中。Java REGEX:匹配註釋和不匹配特定字符

這是我目前正則表達式有:

stringofstuff.split("[!//.*?\n!]"); 

和它的作品,但我的問題是,它還可選配字符「」所以當字符串包含一個數字如90.55,我的數組看起來像[90, 55]這不是我想要的。我試着加入^\\.的正則表達式的右方括號後結束:

stringofstuff.split("[!//.*?\n!]^\\."); 

,並在不匹配.成功,但它不再承認任何類型的註釋!我不知道哪裏出錯,有什麼建議?

+9

對於你打算在許多情況下仍失敗的記錄。例如'System.out.println(「/ *」);'還有很多細微的角落案例。這不能用正則表達式正確地完成。 – djechlin

+0

正則表達式是錯誤的工具 - 你需要一個解析器。此外,您目前正在從您的分組中收到評論和評論之間的非ccmments。 – Bohemian

+0

謝謝你們,你說的沒錯。正如其他人回答的那樣,我通過使用Java中的模式/匹配工具來找到我需要的組,並從其開始索引中刪除其末尾索引來解決此問題。再次謝謝你。 – user1866803

回答

0

你可以使用正則表達式包的模式和匹配器來做到這一點。 例如,要查找的數字:

Pattern p = Pattern.compile("\\d"); 
Matcher m = p.matcher(string); 
if(m.find()) 
{ 
    System.out.println(m.start()+" "+m.end()+" "+m.group); 
} 

同樣可以讓你想分離出弦的不同組合,他們將被存儲在m.group()。

對於不同的組合和正則表達式包的更多信息,你可以在這裏看到:

http://www.regular-expressions.info/java.html

+0

非常感謝你,這竟然是我所需要的 - 非常有幫助的鏈接。原來,我需要一個完全不同的方法來解決我的問題。再次謝謝你。 – user1866803