2017-01-23 2 views
0

Я пытался совместить строки, пропуская узор. Я использую флаг regex re.DOTALL.Соответствие между строками при пропуске рисунка с помощью Regex

Что мне нужно, чтобы извлечь это

CHINTHAPUDI<br/> 
CHINTHAPUDI<br/> 

из выборщиков между Имя и Имя Отца.

Что я в настоящее время набрался это регулярное выражение:

(?:^Elector\'s Name:.*?<br/>)(.*?)^(?:Husband|Father) 

Но это соответствует другим Elector's Name линии ниже первого матча.

Link to my regex101

Вот документ, из которого я хочу, чтобы соответствовать:

Elector's Name: ANANTH CHINTAPUDI<br/> 
Elector's Name: THIRUPATHI <br/> 
Elector's Name: SRINIVASH <br/> 
CHINTHAPUDI<br/> 
CHINTHAPUDI<br/> 
Father's Name: POSHANNA <br/> 
Father's Name: SHANKAR <br/> 
Father's Name: SHANKAR <br/> 
CHINTAPUDDI<br/> 
CHINTHAPUDI<br/> 
CHINTHAPUDI<br/> 

Как я мог идти о соответствии с последней Elector's Name до Father's Name?

+2

довольно просто, если вы удалите многострочные классификаторов, а также требование о том, что линии, прежде чем начать с 'name' курфюрста и' Father' - не хватает времени, чтобы играть с ним больше, чтобы эти критерии. https://regex101.com/r/jbbnWD/3 – Gerrit0

+0

Ничего себе! Большое спасибо! Вы можете написать это как ответ, чтобы я мог принять его :) – MetalloyD

ответ

0

Вот вариант, который работает для вашего условии ввода:

(?:Elector\'s Name:.*?<br/>\r?\n)+(.*?)(?:Husband|Father)

Существует одна потенциальная проблема, что вы должны учитывать, если вы используете это: Если Elector's Name появляется ранее в документе, первый набор будет использоваться. См. demo.

Кроме того, как ваша попытка Regex требуется, чтобы Elector's Name и Husband или Father быть в начале строки, вот версия, которая поддерживает это требование. Если возможно, я бы избегал этого, так как это привело к гораздо более медленной проверке (30 раз).

(?:\r?\nElector\'s Name:.*?<br/>)+\r?\n(.*?)\r?\n(?=Husband|Father)

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