Подобрать регулярное выражение python
У меня есть список cd команд. Мне нужно выбрать только правильные из них использую re python. Пример:
echo %cd% #False
cd C:\\User\\data 1\\data
cd C:\\User lldo #False
cd ../directory #True
cd C:\\ #True
text cd C:\\ #False
....
Помогите пожалуйста подогнать моё регулярное выражение под эту задачу?
Моё регулярное выражение
(.*)(cd \w*)(.*)
UPD
Там где есть комментарий #True, команда правильная. Там где #False, неправильная. В винде как и в остальных системах есть команда cd. cd принимает один аргумент - путь. Если мы введём такую text cd C: или такую cd C: text команду, то мы получим ошибку. Мне нужно проверить, является ли строка валидной командой cd.
Спасибо
Ответы (1 шт):
Автор решения: Михаил Муругов
→ Ссылка
Непонятно, какая задача у ТСа. Первое, что приходит на ум при таком расплывчатом описании:
import shlex # Модуль для лексического анализа простого синтаксиса, подобного unix shell
cmds = ( # Команды для проверки
r'echo %cd%', #False
r'cd C:\\User lldo', #False
r'cd ../directory', #True
r'cd C:\\', #True
r'text cd C:\\' #False
)
for cmd in cmds:
tokens = shlex.split(cmd) # Разбиваем команду на unix-токены
# Выводим команду и результат проверки на то, что эта команда состоит только из двух токенов и первый токен cd
print(f'{cmd} #{len(tokens) == 2 and tokens[0] == "cd"}')