2024-10-03 00:25:32 发布
网友
例如,正则表达式应该匹配“aa”、“aba”、“abba”和“asddsa”,而不是“abab”。你知道吗
我们可以在这里使用正则表达式,但老实说,手动比较两组字母可能更容易:
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")
顺便说一句,这可能比基于regex的解决方案要好,因为它不需要扫描整个字符串,也不需要额外的存储空间。你知道吗
这应该起作用:
^(?=(.)(.)).*\2\1$
注意,我对前两个字符使用了lookahead,而不是简单地匹配它们。这是因为您还希望匹配短于4个字符的字符串。所以我们不想这么早就匹配前两个字符。你知道吗
我将前两个字符捕获到第1组和第2组中,然后匹配中间的所有字符(.*),然后匹配第2组中匹配的所有字符,然后匹配第1组中匹配的所有字符(\1\2)。你知道吗
.*
\1\2
爪哇语:
input.matches("^(?=(.)(.)).*\\2\\1$")
Python:
re.match(r"^(?=(.)(.)).*\2\1$", input)
我们可以在这里使用正则表达式,但老实说,手动比较两组字母可能更容易:
或者在Python中:
顺便说一句,这可能比基于regex的解决方案要好,因为它不需要扫描整个字符串,也不需要额外的存储空间。你知道吗
这应该起作用:
注意,我对前两个字符使用了lookahead,而不是简单地匹配它们。这是因为您还希望匹配短于4个字符的字符串。所以我们不想这么早就匹配前两个字符。你知道吗
我将前两个字符捕获到第1组和第2组中,然后匹配中间的所有字符(
.*
),然后匹配第2组中匹配的所有字符,然后匹配第1组中匹配的所有字符(\1\2
)。你知道吗爪哇语:
Python:
相关问题 更多 >
编程相关推荐