我想从Java字符串中提取所有单词。
单词可以用任何欧洲语言书写,不包含空格,只有字母符号。
它可以包含连字符。
单词可以用任何欧洲语言书写,不包含空格,只有字母符号。
它可以包含连字符。
(?<!\S)\S+(?!\S)
的变体,即任何非空格字符的最大序列。
\S
,以查找更具特定性的内容
[A-Za-z-]
等)[a-z-]
作为字母表字符类: String text = "--xx128736f-afasdf2137asdf-12387-kjs-23xx--";
Pattern p = Pattern.compile(
"(?<!alpha)alpha+(?!alpha)".replace("alpha", "[a-z-]")
);
Matcher m = p.matcher(text);
while (m.find()) {
System.out.println(m.group());
}
这将打印:
--xx
f-afasdf
asdf-
-kjs-
xx--
你可能需要使用Unicode字符类等(请耐心等待,我正在研究这个话题)。
(?<!alpha)alpha+(?!alpha)
就是 alpha+
。我可能会删除它。有反馈吗? - polygenelubricants这将匹配单个单词:
`([^\s]+)`
\S+
更好,或者使用(\S+)
。 - Christoffer Hammarström\s
匹配空格,\S
匹配非空格字符。 - Christoffer Hammarström
x'x'x'
是一个“单词”吗?zexcqcewqxc-trmnbynmtrby
呢? - polygenelubricants