Регулярное выражение для сбора всего после последнего /

Большая проблема, часто пропускаемая, состоит в том, что для больших веб-систем, это требуется, чтобы иметь переходный период или подход к тестированию блока для создания новых выпусков. Это делает важным иметь и откат и механизм для поддержки и старая и новая схема в том же DB. Это требует подхода лесов (сделанный популистом Гибкими людьми DB). В этом сценарии отсутствие процесса в управлении исходным кодом DB может быть общим бедствием. Вам нужны старые сценарии схемы, новые сценарии схемы и ряд промежуточных сценариев, а также убирания, когда-то система находится полностью на новой версии (или откатывается).

Вместо того, чтобы иметь сценарии для воссоздания схемы с нуля то, что требуется, является основанным на состоянии подходом, где Вам нужны сценарии просто для перемещения DB в состояние, Вы требуете, оба передают и назад от версии до версии. Ваш DB становится рядом сценариев состояния, которые могут быть легко источником, которым управляют и теговый наряду с остальной частью источника.

53
задан Alan Moore 13 June 2012 в 08:01
поделиться

7 ответов

Any reason not to do:

httppost.addHeader("Referer", referer);

? HttpPost subclasses (indirectly) AbstractHttpMessage so you should be able to just add headers that way.

substr( strrchr( Text, '/' ), 1 );
106
ответ дан 7 November 2019 в 08:22
поделиться

This pattern will not capture the last slash in $0, and it won't match anything if there's no characters after the last slash.

/(?<=\/)([^\/]+)$/

Edit: but it requires lookbehind, not supported by ECMAScript (Javascript, Actionscript), Ruby or a few other flavors. If you are using one of those flavors, you can use:

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

But it will capture the last slash in $0.

2
ответ дан 7 November 2019 в 08:22
поделиться

Вы также можете получить «имя файла» или последнюю часть с помощью функции basename .

<?php
$url = 'http://spreadsheets.google.com/feeds/spreadsheets/p1f3JYcCu_cb0i0JYuCu123';

echo basename($url); // "p1f3JYcCu_cb0i0JYuCu123"

В моем ящике я мог просто передать полный URL. Возможно, вам придется убрать http: / спереди.

Basename и dirname отлично подходят для перемещения по всему, что выглядит как путь к файлу unix.

12
ответ дан 7 November 2019 в 08:22
поделиться
/^.*\/(.*)$/

^ = start of the row

.*\/ = greedy match to last occurance to / from start of the row

(.*) = group of everything that comes after the last occurance of /

8
ответ дан 7 November 2019 в 08:22
поделиться

Обычно:

/([^/]*)$

Требуемые данные будут совпадать с первой группой.


Изменить Поскольку вы используете PHP, вы также можете использовать strrchr , который возвращает все, от последнего появления символа в строке до конца. Или вы можете использовать комбинацию strrpos и substr , сначала найти позицию последнего вхождения, а затем получить подстроку от этой позиции до конца. Или explode и array_pop , разделите строку на / и получите только последнюю часть.

18
ответ дан 7 November 2019 в 08:22
поделиться

Не программист PHP, но strrpos кажется более многообещающим местом для начала. Найдите самый правый '/', и все, что находится за ним, - это то, что вы ищете. Регулярное выражение не используется.

Найти позицию последнего вхождения символа в строку

1
ответ дан 7 November 2019 в 08:22
поделиться

вы также можете обычное разделение строк

$str = "http://spreadsheets.google.com/feeds/spreadsheets/p1f3JYcCu_cb0i0JYuCu123";
$s = explode("/",$str);
print end($s);
3
ответ дан 7 November 2019 в 08:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: