1
我想提供支持以匹配Java中的標點符號和正則表達式字符。對標點的支持工作正常,但即使是簡單的正則表達式也是失敗的。Java中帶有標點符號的模式匹配
這裏是我的模式:
(\s\p{Punct}|^\p{Punct}|\s|^)ros?(\s|\p{Punct}|$)
和內容我想匹配:rose
find()方法被用於這種模式返回false。我最初認爲,根本原因是該模式的{Punct}
一部分,所以我試圖改變我的正則表達式來(\s\p{Punct}|^\p{Punct}|\s|^)ro?e(\s|\p{Punct}|$)
在我的單元測試,但即使失敗
我沒有看到任何與「e」匹配的東西。我想你可能會對'?'感到困惑。這意味着要匹配0或1次出現的前一個字符,所以'ros?'匹配'ro'或'ros'。它與Linux文件名通配符中的方式不匹配「任何字符」。如果這就是你想要的,使用與任何字符匹配的句點('.')。 – ajb
我認爲你錯用了'^'特殊字符。你是否試圖用它來匹配輸入字符串的開頭,否定或者兩者兼而有之? – J0e3gan
如果你想在'rose'中找到'ros',這個工作:http://ideone.com/pljbKU(在'$'後面加一個空的替換) –