Как извлечь часть строки с косой чертой?

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

BURGERDAY / PPA / This is a burger fest

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

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

/[^/]+/\s*(.*)
zerkms 29.05.2019 01:30

Я не знаю, почему другие проголосовали против, но это хорошее место для начала: stackoverflow.com/help/как спросить

Adriano 29.05.2019 02:21

Есть ли косая черта в целевом контенте?

Bohemian 29.05.2019 02:29
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
3
51
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

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

.+/\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.info(result);

ДЕМО

Советы

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

/ +([^/]*)$

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

.+/\s+(.+)

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

То, что вы делаете, может быть достигнуто другим способом: / +([^/]*)$

revo 29.05.2019 02:32

Это предполагает, что в целевом контенте не будет косой черты (не подтверждено OP). Также небольшое примечание: слэши экранировать не нужно, т.е. это то же самое регулярное выражение: .+/\s+(.+). Если ваш язык (например, JS, но не java, например) требует, чтобы вы экранировали его, потому что косая черта является частью вашего языка, тогда обязательно покажите ее на месте.

Bohemian 29.05.2019 03:36

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

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

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(...). Хотя это один и тот же звонок.

Другие вопросы по теме