2 回答

TA貢獻1859條經驗 獲得超6個贊
這應該有效:
^(?=(.)(.)).*\2\1$
請注意,我對前兩個字符使用了前瞻,而不是簡單地匹配它們。這是因為您還想匹配短于 4 個字符的字符串。所以我們不想這么早匹配前兩個字符。
我將前兩個字符捕獲到第 1 組和第 2 組中,然后匹配 ( .*
)之間的所有字符,然后匹配第 2 組中匹配的所有字符,然后匹配第 1 組 ( ) 中匹配的所有字符\1\2
。
爪哇:
input.matches("^(?=(.)(.)).*\\2\\1$")
Python:
re.match(r"^(?=(.)(.)).*\2\1$", input)

TA貢獻2036條經驗 獲得超8個贊
我們可以在這里使用正則表達式,但老實說,手動對兩組字母進行兩次比較可能更容易:
String input = "BonzaioB";
int n = input.length();
if (input.charAt(0) == input.charAt(n-1) &&
input.charAt(1) == input.charAt(n-2)) {
System.out.println("MATCH");
}
else {
System.out.println("NO MATCH");
}
或者在 Python 中:
input = "BonzaioB"
n = len(input)
if (input[0] == input[n-1] and input[1] == input[n-2]) :
print("MATCH")
else:
print("NO MATCH")
順便說一句,這可能會優于基于正則表達式的解決方案,因為它不需要掃描整個字符串,也不需要額外的存儲空間。
添加回答
舉報