如何使用正则表达式匹配任何字符串的最后两个字符是前两个字符的相反顺序

例如,正则表达式应该匹配“aa”、“aba”、“abba”和“asddsa”,而不是“abab”。


忽然笑
浏览 314回答 2
2回答

BIG阳

这应该有效:^(?=(.)(.)).*\2\1$请注意,我对前两个字符使用了前瞻,而不是简单地匹配它们。这是因为您还想匹配短于 4 个字符的字符串。所以我们不想这么早匹配前两个字符。我将前两个字符捕获到第 1 组和第 2 组中,然后匹配 ( .*)之间的所有字符,然后匹配第 2 组中匹配的所有字符,然后匹配第 1 组 ( ) 中匹配的所有字符\1\2。爪哇:input.matches("^(?=(.)(.)).*\\2\\1$")Python:re.match(r"^(?=(.)(.)).*\2\1$", input)

慕桂英3389331

我们可以在这里使用正则表达式,但老实说,手动对两组字母进行两次比较可能更容易: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")顺便说一句,这可能会优于基于正则表达式的解决方案,因为它不需要扫描整个字符串,也不需要额外的存储空间。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python