我該如何分割字符串,如分割字母,數字的字符串,和標點符號
wo.rd55hello?35.7e+2CAPS!-78.00E-7
到
wo.rd 55 hello? 35.7e+2 CAPS! -78.00E-7
我該如何分割字符串,如分割字母,數字的字符串,和標點符號
wo.rd55hello?35.7e+2CAPS!-78.00E-7
到
wo.rd 55 hello? 35.7e+2 CAPS! -78.00E-7
因爲Java的Regex.Split()
一種新的方法似乎並不以保持分隔符在結果中,即使它們被封閉在一個捕獲組中:
Pattern regex = Pattern.compile(
"[+-]? # Match a number, starting with an optional sign,\n" +
"\\d+ # a mandatory integer part,\n" +
"(?:\\.\\d+)? # optionally followed by a decimal part\n" +
"(?:e[+-]?\\d+)? # and/or an exponential part.\n" +
"| # OR\n" +
"(?: # Match...\n" +
" (?![+-]?\\d) # (unless it's the beginning of a number)\n" +
" . # any character\n" +
")* # any number of times.",
Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE | Pattern.COMMENTS);
Matcher regexMatcher = regex.matcher(subjectString);
while (regexMatcher.find()) {
matchList.add(regexMatcher.group());
}
請注意,這個正則表達式與「1.
」或「.1
」之類的「縮寫」十進制數字不正確匹配 - 它假定十進制數字始終爲整數部分和小數部分。如果需要包含這些情況,則需要增加正則表達式。
謝謝。這是由數字分裂,但我希望數字也包括在內。另外,什麼是(?ix) – user2430361
啊,所以Java的行爲不同於其他正則表達式引擎,如果它包含在捕獲組中,那麼在結果列表中包含分隔符......在這種情況下,您需要一種不同的方法。等一下。 (順便說一下,我評論了正則表達式來解釋'(?ix)'是什麼意思 - 大小寫不敏感匹配和詳細(註釋)模式) –
謝謝!太棒了。 – user2430361
你可以用這個網站來開發你的正則表達式:http://gskinner.com/RegExr/它有一個令牌庫和一個描述。它也有實時的亮點。你可以看到結果(你希望的)。它真的很容易使用,我認爲有一個桌面版本。
也許你必須使用'正則表達式' – Andremoniy
是的,我正在使用正則表達式。我堅持分開有e,E和。的數字。 – user2430361
添加一些代碼你試過 – newuser