我想检测一些特殊的子字符串并且也重叠。我从输入中得到一个字符串,如果该字符串包含'AB'和'BA'(两者),则打印出'是' 如果仅包含“ ABA”或“ BAB”(重叠),则输出为“ NO”。我编写了以下代码,但收到错误消息。问题出在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')
答案 0 :(得分:2)
您可以直接检查模式,而不必担心重叠(因为这是regex的优点)。
(我在这里假设一个字符串ABAxyzBAB
应该打印'YES'
,因为它在个别情况下包含AB
和BA
的情况,而不仅仅是重叠)
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'