2012-01-19 23 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

但是,这将允许OP可能不希望作为单词的'0-9'和'_'。 –

+0

yes your right mathematical.coffee – mkuk

+0

@ mathematical.coffee:同意。顺便说一下,为了在Java中测试正则表达式,我在2005年写了一个小测试程序,我仍然经常用它来构建它们:http://sourceforge.net/projects/javaregextester/ – FriendFX