s = "ababa"
我使用了以下正则表达式:
match = re.search(r'(ab|ba)+', s)
但我得到的输出是:
abab
虽然我希望它(它应该检测替代字符):
ababa
请原谅我,如果它看起来很傻,但我是一个正则表达式noob。
答案 0 :(得分:1)
试试这个正则表达式:
r'(a(ba)*b?|b(ab)*a?)'
这将匹配以a或b开头的模式,以及之后两者之间的任意数量的替换。
答案 1 :(得分:0)
我认为你正在寻找(一般方式):
((.)(?!\2).)(?:\1+\2?|\2)
这意味着:
( # capture group 1: group of two different characters
(.) # capture group 2: first character
(?!\2). # a character that isn't the same of the character in group 2
) # close capture group 1
(?: # two possibilities:
\1+\2? # repeat the group 1 (at least once) with an optional first character at the end
| # OR
\2 # the first character
)
使用固定字符(a
和b
):
a(?:ba)*b?|b(?:ab)*a?
或
a(?:ba)+b?|b(?:ab)+a?
(至少三个字符。)
答案 2 :(得分:0)