要找到第一个单词直到第一个空格我使用正则表达式:
([^\s]+)
但是如何找到第一个单词,直到第一个空格不包含数字
例如字符串是:
First12word50Secųond-WordTrindųword'结果必须是Secųond-Word
First1-2word50Secųond/WordTrietųword'结果必须是Secųond/ Word
First1 /2word50Secųond+WordTrietųword'结果必须是Secųond+ Word
First1 /2word50Secųond1+ WordThirdų-word'结果必须为Thirdų-word
First1 / 2word50Sec1ųond1+ WordThirdų-word'结果必须为Thirdų-word
First1 / 2word50Sec1ųond1+WordToir11dų-word'结果必须为EMPTY
正则表达式([^\s(?<!\d)$]+)
仅返回
第一
答案 0 :(得分:1)
您可以使用
private static String[] arrRemove(String[] strArray) {
Set<String> set = new HashSet<String>();
set.addAll((List<String>) Arrays.asList(strArray));
return (String[]) set.toArray(new String[set.size()]);
}
请参阅demo
正则表达式匹配:
^(?:(?=\S*\d)\S+(?:\s+(?=\S*\d)\S+)*\W*)?\K\S*
- 字符串的开头^
- 一次或零次出现(即可选)......
(?:(?=\S*\d)\S+(?:\s+(?=\S*\d)\S+)*\W*)?
- 除了空格之外的一个或多个字符,应至少包含一位数字(?=\S*\d)\S+
- 零个或多个序列......
(?:\s+(?=\S*\d)\S+)*
- 一个或多个空白字符\s+
- 同上。(?=\S*\d)\S+
- 零个或多个非单词字符\W*
- 省略到目前为止匹配的缓冲区中的整个文本\K
- 零个或多个非空白字符\S*