基本上我有一堆大字符串,我想删除空格/标点符号/数字,我只想要单词。
这是我的代码:
String str = "hughes/conserdyne corp, unit <hughes capital corp> made bear stearns <bsc> exclusive investment banker develop market 2,188,933 financing design installation micro-utility systems municipalities. company systems self-contained electrical generating facilities alternate power sources, photovoltaic cells, replace public utility power sources.";
String[] arr = str.split("[\\p{P}\\s\\t\\n\\r<>\\d]");
for (int i = 0; i < arr.length; i++) {
if(arr[i] != null)
System.out.println(arr[i]);
}
这是我得到的输出:
hughes
conserdyne
corp
unit
lt
hughes
capital
corp
made
bear
stearns
lt
bsc
exclusive
investment
banker
develop
market
financing
design
installation
micro
utility
systems
municipalities
company
systems
self
contained
electrical
generating
facilities
alternate
power
sources
photovoltaic
cells
replace
public
utility
power
sources
正如你所看到的那样,有很多空白区域,而且出现了逗号和数字。如果打印条件不正确,我会得到这个。
然而,如果我将所有arr的内容连接成一个新的字符串,然后用正则表达式“\ s +”将其拆分,它就可以正常输出。
那么我目前的正则表达式有什么问题?任何帮助将不胜感激。
答案 0 :(得分:2)
您应该只能在正则表达式的末尾抛出+
:
String[] arr = str.split("[\\p{P}\\s\\t\\n\\r<>\\d]");
要:
String[] arr = str.split("[\\p{P}\\s\\t\\n\\r<>\\d]+");
// ^-- This guy
添加+
表示匹配前一个元素中的一个或多个,因此如果连续有多个“中断字符”,它们将被视为单个分隔符,您将不会获得空字符串在你的结果中。