例如,正则表达式应匹配“ aa”,“ aba”,“ abba”和“ asddsa”,但不能匹配“ abab”。
答案 0 :(得分:3)
这应该有效:
REM assign binary values based on a random value using a binary
REM convert function reading values from data.
RANDOMIZE TIMER ' reseed rnd
A = INT(RND * 10 + 1)
RESTORE
FOR X = 1 TO A
READ X$
NEXT
pinsb = GetBinary(X$)
PRINT "pinsb="; pinsb
END
DATA "1110111","10100","10110011","10110110","11010100"
DATA "11100110","11100111","110100","11110111","11110100"
FUNCTION GetBinary (B$)
FOR V = LEN(B$) TO 1 STEP -1
IF MID$(B$, V, 1) = "1" THEN
X# = X# + 2 ^ (V - 1)
END IF
NEXT
GetBinary = X#
END FUNCTION
请注意,我对前两个字符使用了前瞻性,而不是简单地将它们匹配。这是因为您还希望匹配少于4个字符的字符串。因此,我们不希望这么早就匹配前两个字符。
我将前两个字符捕获到组1和2中,然后匹配之间的所有内容(^(?=(.)(.)).*\2\1$
),然后匹配组2中匹配的所有内容,然后匹配组1中的所有匹配的内容({{1 }}。
Java:
.*
Python:
\1\2
答案 1 :(得分:0)
我们可以在这里使用正则表达式,但是说实话,手动对两组字母进行两次比较可能会更容易:
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")
顺便说一句,这可能胜过基于正则表达式的解决方案,因为它不需要扫描整个字符串,也不需要额外的存储空间。