Regex Дополнительные матчи - PullRequest
1 голос
/ 22 января 2011

Я пытаюсь сопоставить два типа строк с помощью функции preg_match в PHP, которая может быть следующей.

  • '_ mything_to_newthing'
  • '_ onething'
  • '_ mything_to_newthing_and_some_stuff'

В третьем примере, приведенном выше, мне нужны только слова «что-то» и «что-то новое», поэтому все, что идет после третьей части, - это просто дополнительный текст, который может добавить пользователь. В идеале выходить из регулярного выражения можно в приведенных выше случаях

  • 'mything', 'newthing'
  • onething '
  • 'mything', 'newthing'

Шаблоны должны соответствовать a-zA-Z0-9, если это возможно: -)

Мое регулярное выражение ужасно, поэтому любая помощь будет признательна!

Спасибо заранее.

1 Ответ

1 голос
/ 22 января 2011

Если вы говорите о _ исключенном тексте:

$regex = '/^_([a-zA-Z0-9]+)(|_to_([a-zA-Z0-9]+).*)$/';

$string = '_mything_to_newthing_and_some_stuff';
preg_match($regex, $string, $match);
$match = array(
    0 => '_mything_to_newthing_and_some_stuff',
    1 => 'mything',
    2 => '_to_newthing_and_some_stuff',
    3 => 'newthing',
);

Что касается дальнейших действий, просьба предоставить более подробную информацию и более качественный образец текста / вывода

Редактировать: Вы всегда можете просто использовать explode:

$parts = explode('_', $string);
$parts = array(
    0 => '',
    1 => 'mything',
    2 => 'to',
    3 => 'newthing',
    4 => 'and',
    5 => 'some',
    6 => 'stuff',
);

Пока формат соответствует, он должен хорошо работать ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...