这是问题所在。我需要编写一个正则表达式来突出显示以下文本中的所有项目:
AAAAB
但不包含以下内容:
ABABA
我的第一个想法是使用A?B?
,但那没有用。任何帮助/解释将不胜感激
答案 0 :(得分:2)
假设您只想匹配AAAAB
,而不管其相对于其他文本的位置,则可以使用正则表达式:
A{4}B
在这里,A
匹配字符A,{4}
匹配前面的4个项目(因此,在这种情况下为字符串AAAA),B
匹配一次出现的字符B,只要它位于字符AAAA的序列之后。这将与序列ABABA
不匹配。
答案 1 :(得分:0)
如果您的问题只是想要在B之前重复A的实例,那很容易:
import re
match = re.compile('AA+?B')
match.match('AAAAB') #Finds a match
match.match('ABAB') #Finds no match
如果这不是您想要的内容,则需要更加明确地说明预期的输出,并可能提供更多示例。
答案 2 :(得分:0)
我想,您不仅要匹配四次A和一个B , 而是:
如果以上公式正确,请使用:
^A+B+$
请注意^
和$
锚的用法。
另一个假设:将上述序列作为单个单词, 即可以有其他“环绕”文本,但不能包含字母或数字 可以保持在此字符串的相邻位置(尽管可以 用空格隔开)。
在这种情况下,请使用:
\bA+B+\b
这次,我们使用^
-单词代替$
和\b
锚
边界标记。