2014-01-14 48 views
0

所以我想拿出一個正則表達式將匹配之類的東西:正則表達式不匹配字符聲明

() , ; { } . 

但不

'(' ')' ',' ';'等等

但我真的很掙扎。下面是我得到了什麼:

private String symbolMatcher = "[^'][\\\\(\\\\);\\\\{\\\\}\\\\[\\\\]:\\\\+\\\\-\\\\<\\\\>/\\\\*=&%\\\\|\\\\^@#$~][^']"; 

將在所有的目標是能夠使用掃描儀來標記這些不同的東西:

scanner = new Scanner(line); 
scanner.useDelimiter("(?=[" + symbolMatcher + "])|(?<=[" + symbolMatcher + "])"); 

例如輸入:',''.'[email protected]'^

所需令牌:(',') ('.') (.) (.) (.) (@) (') (^)

+0

您的symbolmatcher字符串解析爲此[[^'] [\\(\\); \\ {\\} \\ [\\]:\\ + \\ - \\ <\\>/\\ * = = &amp;%\\ | \\^@#$〜] [^']]'插入'useDelimeter'時。它是一個單一的複合Java類,有很多不好的東西。無法從中確定意圖。如果您可以擴展頂部的解釋,您可能會得到一些解決方案。我不知道你選擇的答案是什麼,或者它有什麼幫助... – sln

回答

1

點擊該表達式,看看它是如何工作的,並作出解釋\[^'\]+\[\(\),;{}\.\]應該讓你知道如何獲得st arted!

+0

這是什麼'\ [^'\] + \ [\(\),; {} \。\]'?我無法訪問你的鏈接,你能解釋你的意圖嗎? – sln

0

,如果我理解正確的話,這個正則表達式應該有所幫助: ('.*?'|.)

0

我想這正則表達式是你想要什麼:

(?<!')[...](?!') 

更換...與要匹配,如字符: (?<!')[(),;{}.<>+\\-:](?!')

你可以在這裏找到一個解釋和演示:http://regex101.com/r/qE6nV1