Preg_match PHP - сопоставление с образцом - PullRequest
0 голосов
/ 08 декабря 2011

пытается понять preg_match, пытается понять, как писать и как получить доступ к тому, что ему соответствует.Например:

Каждое мое название фильма имеет формат:

ИМЯ ФИЛЬМА (ГОД)

например, Алиса в Стране Чудес (2010)

Я хочу иметь возможность получить название фильма в переменной, отличной от строки.

Некоторые фильмы имеют круглые скобки вне года - как в фильме (имеет один из них) (2008)

Я также перебираю массив строк - поэтому мне нужно в основном использовать preg_match, чтобы добраться до \([0-9]{4}\)$ (является ли $ меткой конца строки?), А затемОстальная часть строки без этого года также в двух переменных.

Может кто-нибудь помочь?

РЕДАКТИРОВАТЬ: Да.Клянусь, я напечатал \.Когда я набираю \ (оно вошло в (потому что я не удвоил escape. В любом случае, спасибо вам, ребята! Сайт, на который вы ссылались, также великолепен (помог с проблемами с массивами, я не осознавал, что полная строка была в 0 какхорошо).

Ответы [ 4 ]

3 голосов
/ 08 декабря 2011

хорошо, если ваш шаблон: SOMETHING + (YEAR), тогда ваше регулярное выражение должно быть таким:

 #^(.+)\((\d{4})\)$#

Пояснение:

 # -> pattern delimiter
 ^ -> beginning of string
 (.+) -> any character "." once or more "+"
 \( -> escape parenthesis character
 \d{4} -> four digits
 \) -> escape parenthesis character
 $ -> end of string

Пример

1 голос
/ 08 декабря 2011

Поиск шаблонов в этих строках:

Alice in Wonderland (2010)
The movie (Has One of These) (2008)

Вы предложили в своем вопросе использовать следующее регулярное выражение:

([0-9]{4})$

, чтобы соответствовать году в конце строки. $ - это маркер конца строки, однако ) - это специальный символ в регулярном выражении, который необходимо разрезать для работы:

\(([0-9]{4})\)$
  ^         ^^ both brackets have been slashed to match them literally
  '- subgroup parenthesis.

или с помощью \d для любого десятичного числа:

\((\d{4})\)$

Это позволит подгруппе 1 содержать год.

0 голосов
/ 08 декабря 2011

Вот онлайн-тестер регулярных выражений, он очень полезен при изучении регулярных выражений и их тестировании: HiFi Regex Tester .

0 голосов
/ 08 декабря 2011

Это одна из ссылок, где regex человек будет сделан

Вы также можете использовать следующие для десятичного числа

\((\d{4})\)$
...