2013-11-13 3 views
0

Я хочу, чтобы мой код легче поддерживать, поэтому я встретил эту проблемумногострочное регулярное выражение в Python

бы

re.compile(r'foo' # some comments 
      '|bar' 
) 

таким же, как:

re.compile(r'foo|bar')#blabla 

И этот :

re.compile(r"""foo #some comments 
       bar""") 

IdeaJ предлагает s omething вот так:

re.compile(r'foo' 
      r'bar') 

У меня тысячи таких вот «foobar».

Я знаю, что третий может генерировать некоторые нежелательные \ w , но как насчет других?

То, что я хотел просто регулярное выражение соответствует Foo или бар

+0

Если поставить плюс после первой подстроки, чтобы присоединиться струны вашей первой один должен работать. – beroe

+1

Возможно, используйте string.join? ''|' .join (r'foo ', r'bar' ...)' – erlc

+0

Спасибо, но что, если я получу еще больше? мне нужно добавить «+» в каждой строке? 'r'foo '(LineBreak) +' bar '(LineBreak) +' foobar'' –

ответ

4

Вы можете поместить свои комментарии в регулярном выражении, указав re.VERBOSE флаг.

re.compile(r'''foo # some comments 
       |bar # some more comments 
      ''', re.VERBOSE) 

Сокращение для флага - re.X. docs

+0

Да, я только возвращался, чтобы предложить это .. – beroe

+3

Мне всегда было забавно, что есть стенограмма для подробного флага. –

Смежные вопросы