Как извлечь часть строки с ограничением косой черты? - PullRequest
0 голосов
/ 29 мая 2019

Здравствуйте, у меня есть несколько строк, названных так:

BURGERDAY / PPA / This is a burger fest

Я пытался использовать регулярные выражения, чтобы получить это, но я не могу понять, правильно ли это.

Выходные данные должны просто получить конечную строку This is a burger fest (без первого пробела)

Ответы [ 2 ]

3 голосов
/ 29 мая 2019

Здесь мы можем получить желаемый результат после того, как достигнем последней косой черты, за которой следует любое количество пробелов:

.+\/\s+(.+)

где (.+) собирает то, что мы хотим вернуть.

const regex = /.+\/\s+(.+)/gm;
const str = `BURGERDAY / PPA / This is a burger fest`;
const subst = `$1`;

// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);

console.log(result);

DEMO

Советы

Основываясь на рекомендациях revo , мы также можем использовать это выражение, которое гораздо лучше:

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

Согласно совету Bohemian , может не потребоваться экранировать косую черту в зависимости от языка, который мы хотим использовать, и это будет работать для JavaScript:

.+/\s+(.+)

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

0 голосов
/ 29 мая 2019

Примечание: это питонский ответ (моя ошибка). Я оставлю это, потому что оно может применяться на многих языках

Другой подход состоит в том, чтобы разделить его и затем присоединиться к нему.

data = 'BURGERDAY / PPA / This is a burger fest'

Вот четыре шага:

parts = data.split('/')   # break into a list by '/'
parts = parts[2:]         # get a new list excluding the first 2 elements
output = '/'.join(parts)  # join them back together with a '/'
output = output.strip()   # strip spaces from each side of the output

И в одной сжатой строке:

output= str.join('/', data.split('/')[2:]).strip()

Примечание: я чувствую, что str.join(..., ...) более читабелен, чем '...'. Join (...) в некоторых контекстах. Это идентичный вызов.

...