亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用正則表達式匹配任何字符串的最后兩個字符是前兩個字符的相反順序

如何使用正則表達式匹配任何字符串的最后兩個字符是前兩個字符的相反順序

忽然笑 2021-11-30 10:38:23
例如,正則表達式應該匹配“aa”、“aba”、“abba”和“asddsa”,而不是“abab”。
查看完整描述

2 回答

?
BIG陽

TA貢獻1859條經驗 獲得超6個贊

這應該有效:

^(?=(.)(.)).*\2\1$

請注意,我對前兩個字符使用了前瞻,而不是簡單地匹配它們。這是因為您還想匹配短于 4 個字符的字符串。所以我們不想這么早匹配前兩個字符。

我將前兩個字符捕獲到第 1 組和第 2 組中,然后匹配 ( .*)之間的所有字符,然后匹配第 2 組中匹配的所有字符,然后匹配第 1 組 ( ) 中匹配的所有字符\1\2。

爪哇:

input.matches("^(?=(.)(.)).*\\2\\1$")

Python:

re.match(r"^(?=(.)(.)).*\2\1$", input)


查看完整回答
反對 回復 2021-11-30
?
慕桂英3389331

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")

順便說一句,這可能會優于基于正則表達式的解決方案,因為它不需要掃描整個字符串,也不需要額外的存儲空間。


查看完整回答
反對 回復 2021-11-30
  • 2 回答
  • 0 關注
  • 328 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號