用于拆分字符串的正则表达式

时间:2015-02-15 08:34:48

标签: java regex string

我正在尝试使用正则表达式拆分字符串,到目前为止我已经

String[] words = a.replaceAll("[^a-zA-Z ]","").toLowerCase().split("\\s+");

这几乎是我想要的,但是当字符串中有换行符时我也需要拆分文本(顺便说一下 - 我应该实际使用换行符还是返回?实际差异是什么?)

澄清一下,我的意见是:

this is a,
sample of
a file.

在拆分并执行一个例程来对单词进行排序并计算每个单词的出现次数之后,我应该得到这个:

a: 2
file: 1
is: 1
of: 1
sample: 1
this: 1

相反,我得到:

asample: 1
file: 1
is: 1
ofa: 1
this: 1

我应该如何更正我的正则表达式以分隔换行符?

3 个答案:

答案 0 :(得分:2)

使用\b[A-Za-z]+\b regexp查找单词匹配。 http://regexr.com/3ae1c

答案 1 :(得分:1)

你必须改变你的replaceAll:

 a.replaceAll("[^a-zA-Z]+"," ")

或者如亚历山大所建议的那样,为什么不直接找到这些词(更直接的话)

答案 2 :(得分:0)

只需在replaceAll方法的第二个参数中插入一个空格即可,

replaceAll("[^a-zA-Z ]"," ") 

或者你可以通过使用' +'来提高效率并避免replaceAll方法返回的字符串中不必要的空格。 Casimir建议的量词

在你的情况下,两者都可以正常工作