Regex: как совместить последнюю точку в строке

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

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

Какое регулярное выражение можно использовать для соответствия только LAST? Мне больше ничего не нужно, только конечная точка.

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

array[0] = jquery.ui.min
array[1] = js

Ответ 1

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

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

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

$filename = substr($file, 0, strrpos($file, '.'));
$extension = substr($file, strrpos($file, '.') + 1);

Ответ 2

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

\.([^.]*)$

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

(\.[^.]*)$

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

Ответ 3

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

Вариант 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

\.[^.]*$

Ответ 5

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

m/\.([^.\\]+)$/

Ответ 6

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

[^\.]([^.]*)$