Я использую PCRE (PHP) регулярных выражений и разработали следующее регулярное выражение:Как вы убедитесь, что регулярное выражение соответствует появлению матча
(?:-?)(?:[A-Z’\s\.-]{8}.*)(?:NY\s?|ON\s?|FL\s){1}([A-Z].*)(?:M\s\d{1,2}\s.*|F\s\d{1,2}.*)
То, что я пытаюсь применить к следующие строки. Ниже каждая целевая строку я предусмотрел нужный матч против фактического матча:
SUNDAY GEISHA-SUNDAY BREAK-JP NYHIT IT ONCE MORE M 13 1116 Race 1
Desired Match: HIT IT ONCE MORE
Actual Match: CE MORE
LOAD UP-DOVE HUNT FL SUMMATION TIME M 11 6T Race 6
Desired Match: SUMMATION TIME
Actual Match: TIME
TEMPLE STREET-STREET CRY-IR KY DONWORTH M 12 1 Race 9
Desired Match: DONWORTH
Actual Match: WORTH
В каждом случае вместо остановки при первом появлении матча, регулярное выражение отнимает больше строки и сопоставление второго вхождения матча.
Вы можете увидеть рабочий пример здесь regex101.com: WORKING EXAMPLE
Как получить мое регулярное выражение, чтобы остановить в первом матче, так что я достигну желаемого выхода? Я также приветствую любые указания на то, как я могу улучшить свое выражение.
Спасибо за ввод.
Может быть, когда вы подходите 'NY',' ON', 'FL' вы должны убедиться, что ему предшествует пробел или' -', но все же у вас будут проблемы с фразами, начинающимися с этих букв. Я думаю, что эта проблема не может быть решена только с помощью регулярного выражения, для этого требуется словарь английских слов, чтобы сделать это на 100% правильно. – Mike
@Mike Когда вы говорите словарь английских слов, что вы имеете в виду. Можете ли вы направить меня к примеру того, о чем вы говорите. – Mutuelinvestor
Я имею в виду, что, как правило, вы не можете делать то, что хотите, если не знаете, например, что «NYHIT» - это не слово. – Mike