Regex: как найти последнюю точку в строке - PullRequest
13 голосов
/ 26 июля 2010

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

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

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

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

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

Ответы [ 6 ]

11 голосов
/ 26 июля 2010

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

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

Или посмотрите на pathinfo.
Или сделать это очень просто в две строки:

$filename = substr($file, 0, strrpos($file, '.'));
$extension = substr($file, strrpos($file, '.') + 1);
11 голосов
/ 26 июля 2010

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

\.([^.]*)$

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

(\.[^.]*)$

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

4 голосов
/ 26 июля 2010

По номиналу нет причин использовать для этого регулярное выражение. Вот 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'];
2 голосов
/ 26 июля 2010
\.[^.]*$
0 голосов
/ 23 июля 2014

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

[^\.]([^.]*)$
0 голосов
/ 24 марта 2013

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

m/\.([^.\\]+)$/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...