2016-05-31 7 views
0

Я пытаюсь написать регулярное выражение для использования в Caliber (python), чтобы найти электронные книги, которые имеют название серии в скобках в заголовке. У меня есть специальный столбец с названием серии и название разделенных символом «~», например:Regex найти 1-ю часть строки во 2-й части?

"The Series~The Book Title (The Series)" 

Лучшее, что я могу придумать находит что-либо, по крайней мере, одну букву из названия серии в скобках в названии :

(.+)~.*[\(\1\)].* 

Я только хочу, чтобы найти те, которые имеют всю первую часть строки в квадратных скобках в конце второй части, она может содержать дополнительную информацию.

Спасибо.

+0

Снимите квадратные скобки и наденьте последний. * На $. –

ответ

0

Это работает в Notepad ++:

(.+)~[^\(]*\(\1\).* 

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

0

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

(.+?)~.*[([]\1[)\]].* 

Working demo

Regular expression visualization

Это будет соответствовать строки, как:

The Series~The Book Title (The Series) 
The Series~The Book Title [The Series] 

Однако, если вы просто хотите, чтобы соответствовать слова с paretheses, то вы можете иметь:

(.+?)~.*[(]\1[)].* 
or 
(.+?)~.*\(\1\).* 

Working demo

Regular expression visualization

0

Спасибо за предложения. Они отлично работают в демонстрации python, но по какой-то неизвестной причине не работают в Caliber. Кажется, что один персонаж больше всего будет соответствовать группе захвата. Должно быть ограничение в системе регулярных выражений, которую использует Caliber.

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

  • Нет связанных вопросов^_^