2012-01-19 5 views
1

Я пытаюсь извлечь из файла все допустимые слова. Допустимые слова определяются как обычные символы, которые могут появиться, как так:регулярное выражение

don't won't can't 

, и я должен игнорировать периоды запятые и восклицательные знаки.

У меня получилось выражение, чтобы просто получить персонажей, но теперь он не получит таких слов, как don't and can't or won't.

Это выражение, которое я использую "[^A-Za-z]+", и я пробовал "\'[^A-Za-z]+", но это прерывает и позволяет использовать все символы. Кто-нибудь знает, что я могу использовать, чтобы получить нормальные слова, в том числе не делать, а не делать, а не может и такие слова.

Большое спасибо

ответ

1

[^A-Za-z] Это будет означать, что-нибудь, не соответствующие этим диапазоны символов! Попробуйте это:

[A-Za-z'] 

Вам может понадобиться, чтобы избежать апостроф, в этом случае вам, вероятно, нужно слеш, избегающий его:

[A-Za-z\\'] 
+0

Я делаю [^ A-Za-z \ '] + это прекрасно? – mkuk

+1

Удалите '^', это означает, что ничего не найдено в квадратных скобках! –

+0

если я не делаю, это печатает символы и пробелы, поэтому я добавил, что – mkuk

0

Другой способ (с использованием аббревиатуры) является: \b[\w']+

+1

Но это позволит '0-9' и' _' тоже, которые OP, возможно, не захочет иметь в виде слов. –

+0

yes your right Mathematical.coffee – mkuk

+0

@ Mathematical.coffee: Согласен. Кстати, чтобы проверить регулярное выражение на Java, я написал небольшую тестовую программу еще в 2005 году, которую я все еще регулярно использую для их создания: http://sourceforge.net/projects/javaregextester/ – FriendFX

0

Это будет соответствовать буквам любого языка и исключать номера.

\b[\p{L}\!\'\?]+ 

Это очень хороший ресурс для регулярных выражений. http://www.regular-expressions.info/

Смежные вопросы