Python正则表达式以两个不同的顺序匹配两个字符串?

2024-06-02 05:20:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在以下字符串中匹配aaa bbb和{}:

aaa  bbb   bbb    aaa

使用

^{pr2}$

https://www.regex101.com/r/vA0nB0/2

但它只匹配aaa bbb

我怎样才能匹配bbb aaa


Tags: 字符串httpscomwwwbbbaaapr2regex101
3条回答

你可以试试下面简单的正则表达式。在

>>> import re
>>> s = 'aaa  bbb   bbb    aaa'
>>> re.findall(r'aaa.*?bbb|bbb.*?aaa', s)
['aaa  bbb', 'bbb    aaa']

如果你知道它总是aaa或{},那么这样的事情怎么样?在

>>> a = 'aaa  bbb   bbb    aaa'
>>> match = re.findall("(aaa|bbb).+?(aaa|bbb)", a, re.DOTALL | re.IGNORECASE)
>>> match
[('aaa', 'bbb'), ('bbb', 'aaa')]

这是regex101链接:https://www.regex101.com/r/qO3uD3/1

如果Python支持条件语句:

对于无序的东西,只需使用条件。在

注意-更改组中的量词以反映有多少项
必须匹配。下面显示了{2},它在某个地方需要这两个项目。
你可以把它改成{1,}-至少1个,或者+-相同的东西。在

(?:.*?(?:((?(1)(?!))aaa.*?bbb)|((?(2)(?!))bbb.*?aaa))){2}

Formatted

 (?:
      .*? 
      (?:
           (                        # (1)
                (?(1)
                     (?!)
                )
                aaa .*? bbb 
           )
        |  (                        # (2)
                (?(2)
                     (?!)
                )
                bbb .*? aaa 
           )
      )
 ){2}

输出:

^{pr2}$

相关问题 更多 >