Вы можете использовать обходные пути для создания пользовательских ограничений
>> str1 = '/shop_types?q%5Btrack_department'
=> "/shop_types?q%5Btrack_department"
>> str2 = '/shop_types/27/list_pinned_vendors'
=> "/shop_types/27/list_pinned_vendors"
>> str1.match?(/shop_types(?!\/)/)
=> true
>> str2.match?(/shop_types(?!\/)/)
=> false
Здесь (?!\/)
- это отрицательный прогноз, который говорит, что символ /
не может быть немедленным после shop_types
Обратите внимание , что конец строки также будет удовлетворять этому условию, поскольку это будет означать, что после shop_types
нет символа
/
.
Я пробовал много разных методов, чтобы исключить "shop_types", за которым следует /, но всегда получаю экранированную ошибку обратной косой черты
Вы можете использовать %r
для определения регулярного выражения с альтернативными разделителями
# here the condition has also been changed
# restriction is that / shouldn't occur anywhere after matching shop_types
>> str1.match?(%r{shop_types(?!.*/)})
=> true
>> str2.match?(%r{shop_types(?!.*/)})
=> false