2014-09-06 22 views
1

我設置了掃描儀的分隔符,如:掃描儀正則表達式定界符問題

scanner.useDelimiter("(\\s*?)(#.*?\n)(\\s*?)"); 

的目標是忽略形式的評論

#comment \n 

這樣:

Hello#inline comment 
world. 

變爲:

Hello 
world. 

通過設置爲我做的分隔符,我會想:

Hello#inline comment world. 

將成爲:

[Hello] 

和:

Hello#inline comment\n world. 

將成爲

[Hello, world.] 

回答

3

我可能是誤會,但它看起來像你可能想使用類似

scanner.useDelimiter("#.*(\r?\n|\r)?"); 

你要記住,並不是每個符合\n(或\r\r\n)結束,例如最後一個行不能有\n在其結束。在不同的操作系統中石灰分離器也可以不同。

編輯:

根據您的意見看起來你可能需要添加掃描儀的標準分隔符(一個或多個空格 - \\s+或者如果你preffer \p{javaWhitespace}+),所以用

scanner.useDelimiter("\\s*#.*(\r?\n|\r)?|\\s+"); 
+0

這會嘗試如果標記之間總是有評論,那麼工作得很好,但是沒有。通常,只有空白。 「P3 \ n#CREATOR:GIMP PNM過濾器版本1.1 \ n10 10 \ n255」應該變成[P3,10,10,25]。 – AaronF 2014-09-06 17:52:22

+0

@AaronF檢查我的更新答案。 – Pshemo 2014-09-06 18:13:28