Нахождение словосочетаний в тексте - PullRequest
0 голосов
/ 02 мая 2019

Я пытаюсь найти слова для текстового файла, которые имеют одинаковое количество символов, но в другом порядке. Например. Я ввожу слово, подобное «hyone», и хочу найти слово с такой же длиной и количеством символов из текстового файла. В данном случае «дорогой» или «милый».

Я уже пытался использовать grep с regex, но код, который я использовал, возвращает слова одинаковой длины, но с разным количеством символов.

Я использовал эту команду:

grep -E "^ [hyone] {5} $" list.txt

Эта команда возвращает слова длиной 5 символов, но они включают слова, которые сделаны не со всеми символами, такими как "хууу" или "ууууу". Обратите внимание, что приведенные примеры составлены, но они суммируют проблему.

1 Ответ

2 голосов
/ 02 мая 2019

не самое привлекательное регулярное выражение, но для вашего примера это работает:

\b(?=.*h)(?=.*y)(?=.*o)(?=.*n)(?=.*e).{5}\b

Этот проверяет, если 5 знаков (измените . на \w только для символов и цифр или используйте [a-z]для ASCII) начинаются с символов h, y, o, n и т.

Однако в других примерах это может не сработать.И для использования в качестве однострочника его создание может быть немного сложнее для других символов, которые будут проверяться.Таким образом, регулярные выражения могут быть не лучшим решением для таких проблем.Левенштейн (как предложил Томас; может быть, в дополнение к Soundex) может работать намного лучше - они немного сложнее, однако

Вы можете протестировать данное регулярное выражение в Интернете по адресу: https://regex101.com/r/7Cdu03/3/

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