gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 04:03:39 24 4
gpt4 key购买 nike

我想检测一些特殊的子字符串并且也重叠。我有一个来自输入的字符串,如果该字符串包含“AB”和“BA”(两者)我打印出"is"如果仅包含“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'

关于regex - 在python中用re库检测一些特殊的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53498465/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com