Я новичок в regex и php, но я столкнулся с проблемой, с которой не могу справиться в одиночку.
Я подготовил это регулярное выражение, чтобы найти шаблоны, начинающиеся с заглавной буквы. Это может звучать примерно так:
захватить любой шаблон, который
начинается с одной или нескольких заглавных букв
затем одну или несколько букв или символов в списке
затем пробел или знак пунктуации
и я использую обратную ссылку, чтобы установить желаемый шаблон до 3 раз:
([A-ZÁÀÂÄÉÈÊËÍÌÎÏÓÒÔÖÚÙÛÜ]{1,}[a-zàáâãäåçèéêëìíîïðòóôõöùúûüýÿ;:«0-9]{1,}[\s-….?,;]\1{1,3})
В соответствии с https://regex101.com/r/pB3nY7/2 это работает как регулярное выражение javascript, но не как регулярное выражение php.
Я проверил другие посты и убедился:
Я использую одинарные кавычки вместо двойных
и я «защитил» \ в моем скрипте php:
'#([A-ZÁÀÂÄÉÈÊËÍÌÎÏÓÒÔÖÚÙÛÜ]{1,}[a-zàáâãäåçèéêëìíîïðòóôõöùúûüýÿ;:«0-9]{1,}[\\s-….?,;]\\1{1,3})#'
Но он по-прежнему не может совпадать ни с одним шаблоном, начинающимся с заглавной буквы.
Заранее благодарим за все советы, которые вы можете дать,
С Уважением,
Чарльз
я проверил это на этом сайте http://www.phpliveregex.com/ :
(^[A-ZÁÀÂÄÉÈÊËÍÌÎÏÓÒÔÖÚÙÛÜ]{1,}[a-zàáâãäåçèéêëìíîïðòóôõöùúûüýÿ;:«0-9]{1,}[\s-….?,;]{1,1}){1,3}
Чтобы быть более универсальным, вы можете использовать свойства юникода:
^(\p[Lu}+[\p{Ll};:«0-9]+[\s\p{P}]){1,3}
куда \p[Lu}
обозначает заглавную букву, \p{Ll}
строчная буква и \p{P}
пунктуация.
preg_match('/^(\p[Lu}+[\p{Ll};:«0-9]+[\s\p{P}]){1,3}/', $string, $match);