Мне нужно регулярное выражение PHP для захвата первой инициализации фамилии людей, перечисленных в текстовом документе.Но захватывайте имена только тогда, когда предложение или строка содержит несколько ключевых слов.(из, с, из, и, как и наблюдалось).Моя текущая попытка захватывает элементы списка, т.е.«A. General» или «B. Issues», потому что, кажется, не волнует то, что стоит перед именами.
Я использовал preg_match_all () с надеждой на возвращение массива имен.(имя, фамилия).
Пример текста
"from J. Smith and B. Miller"
"as T. Baker observed M. Kelly"
"We inquired with B. Brown, T. Stark and J. Maddox."
Я пробовал
- $ regex = "/ [от | с | из | и | как | наблюдалось |, |.] \ s + ([AZ]. \ w +) / ";
- $ regex =" /((from со словами of||||||| и Observed|,| .)\s+([AZ]. \ w +)) / ";
- $ regex =" / \ b (из | с | из | и | как | наблюдалось |, |.) \ s + ([AZ]. \ \ w +) /";
- $ regex =" /\b(from от с of|| и|as| observed|,|.|\b)\s + ([AZ]. \ \ W +) / ";
Я не могу сделать это только тогда, когда список слов перед именами.Я не могу использовать ^, чтобы проверить «начинается с».Я ужасен в регулярных выражениях и думаю, пока это не сработает.Я чувствую, что решение требует какого-то опосредованного утверждения, хотя я не уверен, как оно работает.
Вывод
Должен быть массивом
- ['J.Смит "," Б.Миллер ']
- [' Т.Бейкер ',' М.Келли ']
- [' Б.Браун »,« Т.Старк, Дж.Maddox ']
ОБНОВЛЕНИЕ
Конечное регулярное выражение
- $ regex = "/ \ b (?: From | с | of | и | as |наблюдаемый |,) \ s + ([AZ]. \ \ w +) / ";
Кажется, работает с теми немногими документами, которые у меня есть.Спасибо всем !!