在 python 中使用 re 库检测一些特殊的子字符串
Detect some special sub string with re library in python
我想检测一些特殊的子字符串并且 overlapping.I 有一个来自输入的字符串,如果该字符串包含 'AB' 和 'BA'(两者)我打印出来'yes'
如果仅包含 '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')
您可以直接检查模式而不用担心重叠(因为这正是正则表达式的用武之地)。
(我在这里假设字符串 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'
我想检测一些特殊的子字符串并且 overlapping.I 有一个来自输入的字符串,如果该字符串包含 'AB' 和 'BA'(两者)我打印出来'yes' 如果仅包含 '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')
您可以直接检查模式而不用担心重叠(因为这正是正则表达式的用武之地)。
(我在这里假设字符串 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'