Регулярное выражение для поиска первого одиночного sla sh и последнего слеша - PullRequest
0 голосов
/ 30 января 2020

Это моя структура URL.

abc.com/SOLAPUR_JANATA_SAHKARI_BANK_LTD.SOLAPUR/MAHARASHTRA/index.html

Эти типы шаблонов создают проблемы с mkdir () в php SOLAPUR_JANATA_SAHKARI_BANK_LTD.SOLAPUR SOLAPUR_JANATA_SAHKARI_BANK_LTD.SOLAPUR./ (./ considers directory)

Чего я хочу добиться, так это получить содержимое между первым единственным sla sh и конечным единственным sla sh, то есть

SOLAPUR_JANATA_SAHKARI_BANK_LTD.SOLAPUR/MAHARASHTRA

, и заменить. с @ SOLAPUR_JANATA_SAHKARI_BANK_LTD@SOLAPUR/MAHARASHTRA/

Пожалуйста, предложите регулярное выражение для этого.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 30 января 2020

, что RegExp будет работать => \/(.*)\/

let input = 'abc.com/SOLAPUR_JANATA_SAHKARI_BANK_LTD.SOLAPUR/MAHARASHTRA/index.html';

output = input.replace(/\/(.*)\//, 'foo');

console.log(`output: ${output}`);
0 голосов
/ 30 января 2020

Вы можете попробовать подобный матч: ^.*?\/(.+)\.(.+\/).*$

Заменить на \1@\2

Попробуйте здесь: https://regex101.com/r/i0WM2O/2

Объяснение:

  • ^.*?\/: сопоставить начало ввода и все, вплоть до первого / включительно. .*? не жадный (ленивый), поэтому он будет соответствовать только до первого /
  • (.+)\.: группа захватывает все после первого / (выше) до .
  • (.+\/): группа захватывает все после . до последнего включительно /. + по умолчанию жадный, поэтому .+ будет захватывать все соответствующие / до последнего.
  • .*$: совпадать с тем, что осталось

Первая группа захватывает между первым / и ., например SOLAPUR_JANATA_SAHKARI_BANK_LTD

Вторая группа захватывает между . и включая последние /, поэтому SOLAPUR/MAHARASHTRA/

Так \1@\2 Результат SOLAPUR_JANATA_SAHKARI_BANK_LTD@SOLAPUR/MAHARASHTRA/

...