我想使用正则表达式将文本拆分为单个单词。显而易见的解决方案是使用正则表达式\\b
,不幸的是,这个也会在连字符上拆分。
所以我正在搜索与\\b
完全相同的表达式,但不会在连字符上拆分。
感谢您的帮助。
示例:
String s = "This is my text! It uses some odd words like user-generated and need therefore a special regex.";
String [] b = s.split("\\b+");
for (int i = 0; i < b.length; i++){
System.out.println(b[i]);
}
输出:
This
is
my
text
!
It
uses
some
odd
words
like
user
-
generated
and
need
therefore
a
special
regex
.
预期产出:
...
like
user-generated
and
....
@Matmarbon解决方案已经非常接近,但不是100%适合它给我
...
like
user-
generated
and
....
答案 0 :(得分:3)
这应该可以解决问题,即使前瞻不可用:
[^\w\-]+
也不是你,而是为了另一个目的而需要它的人(即插入一些东西),这更像是\b
- 解决方案:
([^\w\-]|$|^)+
,因为:
有三种不同的职位符合词边界:
- 在字符串中的第一个字符之前,如果第一个字符是单词字符。
- 在字符串中的最后一个字符之后,如果最后一个字符是单词字符。
- 字符串中的两个字符之间,其中一个是单词字符,另一个不是单词字符。
答案 1 :(得分:1)
您可以使用:
(?<!-)\\b(?!-)