文字列に「xyz」というフレーズが含まれているかどうかに基づいてブール値を返す必要があるCodingBat の問題の正規表現を作成しようとしていますが、ピリオドで始まる「xyz」はカウントされません。これまでに試みた正規表現は次のとおりです。
str.matches("(?<!\\.)xyz");
str.matches("[^\\.]xyz")
しかし、どちらも意図したとおりには機能しません。これを機能させるために誰かが私を正しい方向に導くことができれば、私は感謝します.
編集:誰かがテストを求めたので:
xyzThere("abcxyz") → true
xyzThere("abc.xyz") → false
xyzThere("xyz.abc") → true
xyzThere("abcxy") → false
xyzThere("xyz") → true
xyzThere("xy") → false
xyzThere("x") → false
xyzThere("") → false
xyzThere("abc.xyzxyz") → true
xyzThere("abc.xxyz") → true
xyzThere(".xyz") → false
xyzThere("12 .xyz") → false
xyzThere("12xyz") → true
xyzThere("1.xyz.xyz2.xyz") → false