Как я могу использовать регулярное выражение границы слова в утилите findstr - PullRequest
1 голос
/ 19 февраля 2020

Я ищу папку, в которой находятся файлы, содержащие слово car. Это пример данных, с которыми я работаю, полученных с помощью утилиты findstr - findstr /s /i /n car *.*

интервью-290346: 1: Управляет автомобилем, аналогичным описанному.

интервью-29316965: 3: время.) «Ты ничто иное, как колода карт!»

интервью-676473: 7: Следующим свидетелем был повар герцогини. Она несла коробочку с перцем в

интервью-3804339: 1: машина Парка красная, а не синего цвета, и предположительно, человек на камере - мужчина. Не считается подозреваемым.

Я хочу найти файлы, содержащие слово car, но не слова, содержащие подстроку car. Я пытался использовать утилиту findstr с регулярным выражением car\b, но я не могу понять, как правильно ее избежать. Ни один из приведенных ниже результатов не дает никаких результатов:

findstr /s /i /n car\b *.*
findstr /s /i /n "car\b" *.*
findstr /s /i /n car\\b *.*
findstr /s /i /n car\\\\b *.*
findstr /s /i /n "car\\b" *.*
findstr /s /i /n "car\\\\b" *.*

Как правильно выйти из регулярного выражения, и нужно ли что-то еще сделать, чтобы использовать его в findstr? (После ввода этого слова я заметил, что регулярное выражение все равно будет сопоставлять слова с подстрокой car в конце слова, но это нормально. У меня вопрос не о том, какое регулярное выражение использовать, а о том, как его избежать для использования в findstr.)

(Если кого-то интересует контекст этого вопроса, я работаю над загадкой убийства из командной строки .)

1 Ответ

1 голос
/ 19 февраля 2020

Судя по документации , findstr не понимает \ b. Вместо этого вы можете использовать обратный класс, например, «car [^ az]» (не проверено), хотя это не будет соответствовать, если бы «car» был последним в файле. (Возможно, вы могли бы вызвать findstr с другим выражением, чтобы поймать их.)

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