быстрый вопрос для регулярных выражений - PullRequest
1 голос
/ 13 февраля 2010

У меня есть список слов, но в нем есть некоторые слова, такие как

у Востока

Мне нужно найти слова, которые содержат только a-z и A-Z, из списка слов. Как это сделать.

Я использую grep. Что я должен поставить после grep

grep *** myfile.txt

Спасибо!

Ответы [ 6 ]

2 голосов
/ 13 февраля 2010

Требуемое регулярное выражение: ^ [a-zA-Z] + $

Для grep:

vinko@parrot:~$ more a.txt
Hi
Hi Dude
Hi's
vinko@parrot:~$ egrep ^[a-zA-Z]+$ a.txt
Hi

В псевдокоде:

 regexp = "^[a-zA-Z]+$";
 foreach word in list
      if regexp.matches(word)
          do_something_with(word)
1 голос
/ 13 февраля 2010

Синтаксис grep:

grep '^[[:alpha:]]\+$' input.txt

Документация для синтаксиса шаблона grep: здесь .

0 голосов
/ 13 февраля 2010

Или отфильтруйте все слова, которые содержат смешные

grep -v '[^a-zA-Z]'
Есть ли приз за самый короткий ответ? :)

Обратите внимание, что существуют различия в переносимости между [[: alpha:]] и [A-Za-z]. [A-Za-z] работает в других версиях grep, но [[: alpha:]] учитывает среду широких символов и интернационализацию (например, символы с акцентом, когда они включены в локаль).

0 голосов
/ 13 февраля 2010

GNU grep

grep -wEo "[[:alpha:]]+" file
0 голосов
/ 13 февраля 2010

Используйте fgrep, если хотите сравнить со списком слов.

fgrep word_list_file myfile.txt
0 голосов
/ 13 февраля 2010
[a-z]+

с использованием параметра без учета регистра или

[A-Za-z]+

без учета регистра без учета регистра.

Разместите данные и язык для получения дополнительной помощи.

для grep

egrep -i '^[a-z]+$' wordlist.dat

Я не могу вспомнить, какие метачары нужно экранировать, а если нет, попробуйте \ [a-z \] \ + или любую другую подобную комбинацию!

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