2 回答

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

TA貢獻(xiàn)2036條經(jīng)驗(yàn) 獲得超8個贊
我們可以在這里使用正則表達(dá)式,但老實(shí)說,手動對兩組字母進(jìn)行兩次比較可能更容易:
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")
順便說一句,這可能會優(yōu)于基于正則表達(dá)式的解決方案,因?yàn)樗恍枰獟呙枵麄€字符串,也不需要額外的存儲空間。
添加回答
舉報