-1

вот допустим пример

'этот текст мне нужен / текст / текст / текст / текст / текст / текст / текст / текст / текст / текст /

На месте "текст" может быть сколько угодно слов, и какие угодно символы кроме /

Мне надо захватить все что находится до первого символа /, как это сделать? Пробовал так (.+)\s/ но это захватывает все до последнего символа / а мне нужно до первого

nomnoms12
  • 18,448

4 Answers4

1

Вот так вот:

^[^/]*

Тест https://regexr.com/5ak3c

'этот текст мне нужен / текст / текст / текст / текст / текст / текст / текст / текст / текст / текст /

dIm0n
  • 407
  • Я насчёт пробела не уверен. – Qwertiy Aug 21 '20 at 10:39
  • @Qwertiy в плане надо ли его захватывать? Ну в условии сказано "надо захватить все что находится до первого символа", поэтому захватываю его тоже – dIm0n Aug 21 '20 at 10:41
1
^(.+?)\/

^ указывает на начало строки.Скобки на то, что надо захватить часть в скобках и проигнорировать первую встреченную косую черту,потом эту группу захваченных символов надо будет извлечь.

Предлагаю вам прочитать про жадные и ленивые квантификаторы в регулярных выражениях.Очень пригодится и поймете что тут значит комбинация '+?'.

Пример выполнения: regexr.com/5am2c

0

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

var = '/test/asd/123/'
print(var.split('/')[1])
# test

Адаптируется под любой язык

Inventor
  • 2,018
  • @Smorvel На каком языке программа? – Inventor Aug 21 '20 at 07:22
  • @Smorvel не получится с помощью регулярных выражений в JS получить именно эту строку, всё равно придётся применять другие методы тоже. Потому что будет много совпадений либо строка будет возвращаться с лишними символами – Inventor Aug 21 '20 at 07:25
  • 1
    Всё получится... – Qwertiy Aug 21 '20 at 10:37
0

Выбирай:

var s = "этот текст мне нужен / текст / текст / текст / текст / текст / текст / текст / текст / текст / текст /"

console.log(">>>" + s.match(/^[^/]/)[0] + "<<<") console.log(">>>" + s.match(/^([^/]?)\s//)[1] + "<<<") console.log(">>>" + s.match(/^([^/]?)(?=\s*/)/)[0] + "<<<")

Qwertiy
  • 123,725