用python中的re-library检测一些特殊的子字符串



我想检测一些特殊的子字符串以及重叠。我有一个来自输入的字符串,如果字符串包括"AB"one_answers"BA"(两者都有(,我会打印出"是"如果仅包括"ABA"或"BAB"(重叠(,则输出为"否"。我写了以下代码,但收到错误。问题出在if中的re.search((中。如何正确使用re.search查找此代码?提前感谢的帮助

import re
str1=input()
if re.search('AB',str1):
if re.search('BA',str1):
if re.search('ABA'|'BAB',str1):
if re.search('ABBA'|'BAAB',str1):
print('YES')
print('NO')
print('YES')
else :
print('NO')
else:
print('NO')

您可以直接检查模式,而不用担心重叠(因为这是regex的优点(。

(我在这里假设字符串ABAxyzBAB应该打印'YES',因为它在个别情况下包含ABBA的情况,而不仅仅是重叠(

import re
str1=input()
if re.search(r'AB.*?BA', str1):
print('YES')
elif re.search(r'BA.*?AB', str1):
print('YES')
else:
print('NO')

它首先检查字符串的一部分是否与AB匹配,然后查找AB以找到BA,如果发生这种情况,它将打印出'YES'。否则,它将尝试相反的操作,然后检查字符串的一部分是否与BA匹配,然后查找BA以找到AB。如果它随后找到一个AB,它就会打印出'YES'。在这两种情况都没有发生的情况下,它会打印出'NO'

最新更新