Может ли регулярное выражение соответствовать определенному символу, но не возвращать результат? - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть строка:

"abc3-3213dsads123dsdsaasa7/basic-2.xhtml?"

Я хочу получить:

"abc3-3213dsads123dsdsaasa7"

, где длина "abc3" и "3213dsads123dsdsaasa7" является произвольной.Я использую это в ограничении в моем файле маршрутов.

Я пытался:

.+-.+[\/]

Однако, в конце он включает /.Можно ли сопоставить символ в регулярном выражении, но игнорировать его в результате?

Ответы [ 3 ]

0 голосов
/ 14 декабря 2018

Вы можете использовать:

^(\w+)-(\w+)

Демо : https://regex101.com/r/xGCTbY/2

Если вам не требуется захватывать части строки, вы можете удалить ( )

Предположение: В начале вашей строки нет другого символа, в противном случае ограничение ^ здесь не будет работать, и вы должны использовать положительное значение (?=\/)lookahead.

Также \w будет соответствовать только символам слов, поэтому вы можете заменить его на . или в более общем виде: ^[^\/-]+-[^\/-]+, чтобы взять все, пока не достигнете первой косой черты.

0 голосов
/ 14 декабря 2018

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

str = "abc3-3213dsads123dsdsaasa7/basic-2.xhtml?"

str.partition("/").first
# => "abc3-3213dsads123dsdsaasa7"
0 голосов
/ 14 декабря 2018
str = "abc3-3213dsads123dsdsaasa7/basic-2.xhtml?"

str[/.+(?=\/)/]
  #=> "abc3-3213dsads123dsdsaasa7"

(?=\/) - это позитивный взгляд .Требуется, чтобы за сопоставленной строкой следовала косая черта.

В качестве альтернативы, в зависимости от потребностей, вы можете использовать регулярное выражение /[^\/]+/ или /.+?-[^\/]+/.

Вы также можете сделать этолегко без использования регулярного выражения.

str[0, str.index('/')]
 #=> "abc3-3213dsads123dsdsaasa7"

Я предположил, что нет никаких ограничений на символы, которые предшествуют косой черте.Это соответствует ограничениям на именование файлов в семействе Unix (включая Linux и OS / X), а именно, имена файлов могут включать любые символы, кроме косой черты и NUL.См. здесь и здесь .Ограничения Windows на имена файлов обсуждаются здесь .

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