我試圖用正則表達式得到所有的單詞,但只有[a-zA-Z]。 因此,對於「我是男孩」,我希望{「我」,「我」,「一」,「男孩」} ,但對於「我a1m ab * y」,我想{「我」,「a」}因爲「a1m」和「b * y」包含[a-zA-Z]以外的字符。用正則表達式從一個句子找到單詞[a-zA-Z]
所以,我得到的話,我想檢查
- ,如果它是在字符串的開頭,然後如果有字
- 否則以後空間有一個空間,我只檢查前,在單詞
- 之後,如果它是最後一個單詞,那麼檢查單詞前是否有空格。
所以我結束了在Java中是這樣的:
Pattern p = Pattern.compile("^[a-zA-Z]+ |^[a-zA-Z]+$| [a-zA-Z]+$| [a-zA-Z]+");
Matcher m = p.matcher("i am good");
while(m.find()) System.out.println(m.group());
不過,我只得到 「我」 和 「好」。 因爲當我得到「我」時,「我」之後有一個空格。 所以剩下的字符串是「很好」「 由於」am「不在字符串的開頭,它也沒有返回。
你們可以提供任何意見嗎? 有沒有辦法只偷看下一個角色,而不是返回空間?
這是什麼正則表達式引擎? – 2012-01-16 04:27:27
我必須是正則表達式的noob,因爲我甚至不能回答這個問題。我使用的是6.0 java,對於正則表達式庫,我使用的是java.util.regex。*。希望能回答這個問題。 – 2012-01-16 12:46:05
這是一個合理的答案。不幸的是,我對Java正則表達式一無所知,所以我不知道它是否支持lookahead/lookbehind斷言(這是我在下面的答案中使用的)。你只需要測試以找出答案。 – 2012-01-16 20:42:39