Использование оператора AND & OR вместе в re.search в python? - PullRequest
3 голосов
/ 07 января 2020

Есть ли способ использовать оператор И & ИЛИ вместе в re.search в python?

if re.search(r'xyz|abc', line) != None:

Здесь я использовал оператор ИЛИ, но мое требование - получить строку, содержащую ('xyz' или 'abc') и 'pqr'. Как это сделать?

Ответы [ 3 ]

3 голосов
/ 07 января 2020

Чтобы игнорировать порядок строк, вы можете использовать

if re.search(r'(?=.*[pqr])(?=.*[xyz|abc])', line):
    print('match')

line = 'xyzpqr' # match
line = 'pqrxyz' # match
3 голосов
/ 07 января 2020

Это работает:

>>> import re
>>> re.search( r'(xyz|abc)pqr', 'abcpqr' )
<_sre.SRE_Match object at 0x7fa3055bdeb0>
>>> re.search( r'(xyz|abc)pqr', 'abcpq' )
>>> 
2 голосов
/ 07 января 2020

Попробуйте это:

re.search(r'((xyz|abc).*pqr)|(pqr.*(xyz|abc))', line)
...