пакет: регулярное выражение FINDSTR не работает

echo a.txt| FINDSTR /R ".+\.txt$"

не работает и даже не:

echo a.txt| FINDSTR /R .+\.txt$

Почему?

Редактировать:

В настоящее время работает!

echo a.txt| FINDSTR /R ..*\.txt$

person Mario Palumbo    schedule 05.12.2018    source источник
comment
Откройте командную строку и введитеFindStr /?, затем прочтите информацию об использовании!   -  person Compo    schedule 06.12.2018
comment
Почему? Потому что вы не смогли сначала прочитать файл справки для команды FINDSTR.   -  person Squashman    schedule 06.12.2018
comment
Мы не можем знать, что означает «не работает», если вы не объясните, чего хотите достичь!   -  person aschipfl    schedule 06.12.2018


Ответы (1)


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

б) Перед концом строки может стоять невидимый символ, например вызвано echo, если перед | есть конечный пробел. Добавьте еще . перед концом строки, чтобы скрыть это.

C:\> echo a.txt | findstr /r ".*\.txt.$"
a.txt

Также можно без кавычек.

person Thomas Weller    schedule 05.12.2018
comment
@ThomasWeller Невидимый символ - это пробел между a.txt и |, который также выводится echo и поэтому перенаправляется на обработку STDIN команды findstr. При использовании echo a.txt| findstr /R ".*\.txt$" все как и ожидалось. См., Например, мой ответ на Почему команда ECHO выводит дополнительное конечное пространство в файл? для получения дополнительной информации. - person Mofi; 06.12.2018
comment
Изменение + на * изменяет поведение; вместо этого замените .+ на ..*, чтобы добиться того же результата ... - person aschipfl; 06.12.2018
comment
@aschipfl: отличное предложение. Я добавил это в ответ - person Thomas Weller; 06.12.2018