我想匹配一個字符串,從一個點開始使用java的匹配方法。爲什麼這不起作用:匹配使用匹配的字符串開頭的點?
".why?".matches("\\.*");
當我使用一個單一的斜槓,我越來越爲無效轉義序列錯誤。 在此先感謝
我想匹配一個字符串,從一個點開始使用java的匹配方法。爲什麼這不起作用:匹配使用匹配的字符串開頭的點?
".why?".matches("\\.*");
當我使用一個單一的斜槓,我越來越爲無效轉義序列錯誤。 在此先感謝
"\\.*"
匹配由零個或多個零組成的字符串'.'
s。它匹配以下(引用)字符串:
""
"."
".."
"..."
(等)
你想:"\\..*"
代替。需要注意的是.
在默認情況下不匹配換行符,所以它不會匹配以下字符串:
".Why? \n Not!"
對於這樣的字符串匹配,則需要啓用DOT-ALL:"(?s)\\..*"
剛試過它自己。這適用於我
System.out.println(".why?".matches("^\\..*"));
你只是缺少一個「。」匹配「爲什麼?」部分。
現在,它的工作原理,謝謝,但爲什麼我需要第二個點 – mjekov 2012-04-18 19:27:43
@Colin,不,額外的反斜槓只在那裏,因爲它被放置在Java中的字符串文字中。所以字符串模式''\\。「'相當於正則表達式模式:'\ .'(注意雙引號!) – 2012-04-18 19:29:11
可能值得說明的是你的意思是\\。*對於「。」,「..」,「...」,...而\\ .. *對於「。」,「.anything」,「.etc」,... \爲真。存在 。第二 。作爲任何字符,並*無限重複任何字符規則。 – 2012-04-18 19:31:16