2017-01-05 4 views
1

Я выполняю операцию регулярного выражения, чтобы не останавливаться ни на наборах символов {, либо \t\t{.остановка нескольких строк и символов с помощью '^'

первое нормально, но второе не может быть достигнуто с помощью символа^так, как я был.

Мой текущий регулярное выражение [\t+]?{\d+}[^\{]*

Как вы можете видеть, я эффективно использовал ^ с одного символа, но я не могу применить его к строке символов, как \t\t\{

Как можно текущее регулярное выражение применять для рассмотрения обеих этих возможностей?

Пример текста:

{1} The words of the blessing of Enoch, wherewith he blessed the elect and righteous, who will be living in the day of tribulation, when all the wicked and godless are to be removed. {2} And he took up his parable and said--Enoch a righteous man, whose eyes were opened by God, saw the vision of the Holy One in the heavens, which the angels showed me, and from them I heard everything, and from them I understood as I saw, but not for this generation, but for a remote one which is for to come. {3} Concerning the elect I said, and took up my parable concerning them: 

     The Holy Great One will come forth from His dwelling, 
     {4} And the eternal God will tread upon the earth, [even] on Mount Sinai, 
     And appear from His camp 
     And appear in the strength of His might from the heaven of heavens. 

     {5} And all shall be smitten with fear 
     And the Watchers shall quake, 
     And great fear and trembling shall seize them unto the ends of the earth. 

     {6} And the high mountains shall be shaken, 
     And the high hills shall be made low, 
     And shall melt like wax before the flame 

Когда я сделать это как экстракт многострочного, то indendantation не выдерживает для первой строки каждого блока. В идеале экстракт должен заканчиваться на \ t \ t {позволяя ему правильно подобрать в следующем фрагменте, создавая идеально отступы. Причина этого в том, что они берутся из базы данных, \ t \ t следует определить в первой строке, чтобы разрешить динамическое форматирование.

+0

Что вы пытаетесь извлечь? Кроме того, из любопытства, этот текст берет из книги Еноха? –

+0

Я пытаюсь извлечь из отступов стихи точно, но также правильно получить абзац-стихи. И да, это Книга Еноха. – Pipsqweek

ответ

1
[\t+]?{\d+}[\s\S]*?(?=\s*{|$) 

Вы можете использовать это. См. Демонстрационную версию.

https://regex101.com/r/nNUHJ8/1

+0

Он определенно работает в демо. Позвольте мне подключить его к python, чтобы узнать, как это происходит. – Pipsqweek

+0

@Pipsqweek просто использует 're.findall' без какого-либо' флага' – vks

+0

Это работает довольно хорошо. Кажется, что он удаляет вкладку (поэтому первая строка - 1 вкладка вместо двух), но я могу работать с этим и соответствующим образом отрегулировать ее. Благодарим вас за помощь. – Pipsqweek

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