Шаблон, чтобы найти все данные между двумя словами - PullRequest
0 голосов
/ 20 января 2010

Я использую шаблон ниже, чтобы найти все данные между двумя словами, помещенными в несколько строк.

/ START (. +?) END /

Но, похоже, это работает не так, как ожидалось. Может кто-нибудь помочь мне с точным шаблоном.

Спасибо.

Ответы [ 3 ]

2 голосов
/ 20 января 2010

Используйте флаг s: с этим флагом точка (.) также будет соответствовать символам новой строки.

 /start(.+?)end/s
1 голос
/ 20 января 2010

Вы хотите сказать, что хотите подобрать такие вещи, как

START
  blah blah blah
  more blah
  and even more blah
END

?Поскольку . не не соответствует символам новой строки по умолчанию, ваше регулярное выражение не будет работать.Вам необходимо указать однострочный (также известный как «точка-все») флаг /s, чтобы он соответствовал символам новой строки.

/START(.+?)END/s
0 голосов
/ 20 января 2010

при условии, что вы, например, можете использовать Python.

>>> s="""
... START
...   blah1 blah2
...   more blah  
...   and even more blah
... END blah3 blah4 blah5 START blah 6
... text here here                    
... blah7 END ......                  
... START end END                     
... """                            
>>> for item in s.split("END"):
...     if "START" in item:
...        print item [ item.find("START")+len("START") : ]
...

  blah1 blah2
  more blah
  and even more blah

 blah 6
text here here
blah7
 end

Разделите вашу строку на «КОНЕЦ», просмотрите все разделенные элементы, проверьте на START и выполните подстроку.Используйте метод разделения вашего предпочтительного языка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...