Образец, соответствующий однородной структуре предложения

У меня есть предложение с единообразной структурой, и я хотел бы использовать регулярное выражение для выбора определенных слов из предложения. Например, структура предложения выглядит следующим образом:

["Take the"] + [train] + ["bound train to"] + [stop]

где слова в кавычках жестко закодированы, а слова без кавычек являются переменными. Например, исходя из этой структуры предложения, применимы следующие предложения:

- Take the L bound train to 1st street.
- Take the 1 bound train to neverland. 

Мне нужна помощь в создании шаблона регулярного выражения, который будет соответствовать этому и позволит мне разобрать [train] и [stop]. Мое кунфу регулярного выражения слабое, и мне не помешала бы помощь.


person vikash dat    schedule 19.11.2012    source источник
comment
также с www.rubular.com вы можете протестировать свои собственные регэкспы   -  person Andrei Cristian Prodan    schedule 19.11.2012


Ответы (3)


Очень простое регулярное выражение: '^Take the (.*) bound train to (.*)\.$', которое хранит [train] в первой группе захвата и [stop] во второй.

^               # Match the start of the string
Take the        # Match the literal string
(.*)            # Capture the [train]
bound train to  # Match the literal string
(.*)            # Capture the [stop]
\.              # Match the fullstop 
$               # Match the end of string
person Chris Seymour    schedule 19.11.2012

preg_match("/^Take\sthe\s([\d\w]+)\sbound\strain\sto\s([\w\d]+)$/", $string, $hits);

Что-то вроде этого должно работать

person Naryl    schedule 19.11.2012

Насколько я понимаю, похоже, что вы хотите сделать какой-то шаблон, который потребует переработки структуры и форматирования вашего предложения.

Я вижу следующее:

Take the %start% bound train to %stop%

Которые очень легко заменить конкретными словами, которые вам нужны.

/%stop%/Union Station
/%stop%/East Station

Я знаю, что это обошло ваш вопрос, но это было бы лучшим решением, чем универсальное регулярное выражение, которое будет/может стать трудным для поддержки в будущем.

person sean    schedule 19.11.2012