Я создаю это регулярное выражение с позитивным взглядом на него. По сути, он должен выбрать весь текст в строке до последней точки, которая предшествует «:», и добавить «|» до конца, чтобы разграничить его. Пример текста ниже. Я тестирую это в gskinner и editpadpro, которые, по-видимому, имеют полную поддержку регулярных выражений grep, поэтому, если бы я мог получить ответы, я был бы признателен.
Регулярное выражение ниже работает до некоторой степени, но я не уверен, правильно ли оно. Также он падает, если текст содержит скобки.
Наконец, я хотел бы добавить еще одно правило игнорирования, подобное тому, которое игнорирует, но включает «Ко». в выборе. Это второе правило игнорирования будет игнорировать, но включать точки, перед которыми стоит одна заглавная буква. Пример текста также ниже. Спасибо за помощь.
^(?:[^|]+\|){3}(.*?)[^(?:Co)]\.(?=[^:]*?\:)
121| Ryan, T.N. |2001. |I like regex. But does it like me (2) 2: 615-631.
122| O' Toole, H.Y. |2004. |(Note on the regex). Pages 90-91 In: Ryan, A. & Toole, B.L. (Editors) Guide to the regex functionality in php. Timmy, Tommy& Stewie, Quohog. * Produced for Family Guy in Quohog.