Выбор всего текста до определенного слова (регулярные выражения)

задача в следующем: Есть строки: "test/test/chars" "test/test" Как написать регулярное выражение, чтобы выделялось только "test/test" в обоих слуаях Я пробовал написать .*(?=/chars), но оно работает только в первом случае ("test/test/chars"), без chars оно не выделяет ничего. Язык программирования python Пробовал:

re.findall('.*(?=\/chars)', 'test/test')
re.findall('.*(?=\/chars)', 'test/test/chars')

Ответы (3 шт):

Автор решения: teran

в вашем случае впереди надо искать либо /chars либо конец строки $

.*?(?=\/chars|$)

либо,

(.*?)(?>\/chars)?$

последнее дастат результат test/test для строки test/test/chars, но для строки test/tests/chars1 вернет всю строку целиком

→ Ссылка
Автор решения: A_Vaclav

Если "да, абсолютно любое слово(причем, может быть несколько слов через слэш). Главное чтобы на конце chars не выделялось, если оно есть – Антон Бондарь", тогда может проще chars вытолкнуть?

import re

s = 'test/test/chars'
result = re.sub(r'chars$', '', s)
print(result)

И это все тоже не очень... Если это (я предполагаю) часть http, может стоит просто разобрать по / , проверить последнее и если 'chars' - удалить последнее? Или если известно количество нужных "узлов", обрезать список по длине.

→ Ссылка
Автор решения: SergFSM

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

text = 'test/test/chars/chars2'
stop = 'char'

search(fr'(.+?){stop}', text).group(1)

результат:

'test/test/'
→ Ссылка