public class Homework { public static void main(String[] args) { String words[] = { "Abendessen", "Affe", "Affen", "aber", "anders", "Attacke", "arrangieren", "Art", "Asien", "Bund", "Arten", "Biene", "Abend", "baden", "suchen", "A1rten", "Abend-Essen" }; Pattern pattern = Pattern.compile("[aA][a-z[n]+a-z]*"); for (int i = 0; i < words.length; i++) { Matcher matcher = pattern.matcher(words[i]); if (matcher.find()) { System.out.println("OK: " + words[i]); } } }}過濾以 a 或 A 開頭并包含 n 的單詞。這些單詞可能僅由字母組成,并且只有以第二個(gè)字母開頭的小寫字母。這些詞應(yīng)該匹配:Abendessen, Affen, anders, arrangieren, Asien, Arten, Abend我已經(jīng)粗心地嘗試了上面的這個(gè)正則表達(dá)式,并且認(rèn)為那也是錯(cuò)誤的。
1 回答

小怪獸愛吃肉
TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超1個(gè)贊
您當(dāng)前的模式[aA][a-z[n]+a-z]*
如下:
字符類[aA]
,字符類[a-z[n]+
。然后后面跟著a-z]*
which 將匹配a
, -
,z
并]
重復(fù) 0+ 次。
例如匹配Abendessena-z]
你可能做的是用 a 或 A 開始匹配并重復(fù) 2 次[a-z]
0+ 次并確保n
中間有一個(gè) a:
\b[aA][a-z]*n[a-z]*\b
解釋
\b
單詞邊界[aA]
匹配 a 或 A[a-z]*
匹配 0+ 次 azn
匹配n
[a-z]*
匹配 0+ 次 az\b
單詞邊界
您也可以使用錨點(diǎn)^
并$
斷言字符串的開頭和結(jié)尾而不是\b
添加回答
舉報(bào)
0/150
提交
取消