正則表達式似乎沒問題,因爲第一行代碼正確地用「helloworld」代替子字符串,但是後者中的表達式不匹配,因爲我不能看到「whynothelloworld?」在控制檯上Pattern.matches不起作用,而replaceAll卻起作用
System.out.println(current_tag.replaceAll("^[01][r]\\s", "helloworld"));
if (Pattern.matches("^[01][r]\\s", current_tag)) { System.out.println("whynothelloworld?");}
似乎每個人都是這樣,但當我第一次來到Java時,我犯了這個錯誤。我不知道如何逃脫。不知何故,我總是很幸運地使用'find',從來沒有'匹配',這是在我注意到差異之前。我想這是因爲我在第一個Java項目中進行了增量匹配,現在是long(ish)ago。不過,我認爲這是一個設計/用戶界面缺陷,他們做了這個愚蠢的事情。 – tchrist
Even weirder是Python:'re.match'隱式地將正則表達式錨定到字符串的開頭(但不是結尾),而're.search()'的行爲與預期的一樣(比如''matcher.find()''在Java中)。 –
現在很清楚:) tnx分配,它就像一個魅力! –