Регулярное выражение: как сопоставить последнюю точку в строке


У меня есть две строки имени файла в качестве примера:

jquery.ui.min.js
jquery.ui.min.css

Какое регулярное выражение я могу использовать, чтобы соответствовать только ПОСЛЕДНЕЙ точке? Мне больше ничего не нужно, только последняя точка.

Немного подробнее о том, что я делаю. Я использую функцию PHP preg_split(), чтобы разделить имя файла на массив. Функция удаляет все совпадения и предоставляет вам массив с элементами между разделениями. Я пытаюсь заставить его расколоться jquery.ui.min.js в массив, который выглядит следующим образом:

array[0] = jquery.ui.min
array[1] = js
 12
Author: Marshall Thompson, 2010-07-26

6 answers

Я думаю, вам будет трудно использовать preg_split, preg_match должно быть, это лучший выбор.

preg_match('/(.*)\.([^.]*)$/', $filename, $matches);

В качестве альтернативы, взгляните на pathinfo.
Или сделайте это очень просто в двух строках:

$filename = substr($file, 0, strrpos($file, '.'));
$extension = substr($file, strrpos($file, '.') + 1);
 11
Author: deceze, 2010-07-26 03:33:18

Если вы хотите извлечь последнюю часть строки, вам понадобится:

\.([^.]*)$

Если вы не хотите . или

(\.[^.]*)$

Если вы это сделаете.

 9
Author: paxdiablo, 2010-07-26 03:01:12

По номинальной стоимости нет причин использовать для этого регулярное выражение. Вот 2 различных метода, которые используют функции, оптимизированные для статического анализа строк:

Вариант 1:

$ext = "jquery.ui.min.css";
$ext = array_pop(explode('.',$ext));
echo $ext;

Вариант 2:

$ext = "jquery.ui.min.css";
$ext = pathinfo($ext);
echo $ext['extension'];
 4
Author: Crayon Violent, 2010-07-26 03:38:06
\.[^.]*$
 2
Author: Brandon Horsley, 2010-07-26 02:58:51

Я использовал это - попробуйте:

m/\.([^.\\]+)$/
 0
Author: someguy, 2013-03-24 15:36:30

Вот что мне нужно было исключить последнюю точку при сопоставлении только для последней "части":

[^\.]([^.]*)$
 0
Author: Jaans, 2014-07-23 13:07:30