我想使用[,.!?;~]
分割字符串,但我希望将[,.!?;~]
保留到其位置,例如:
这是一个例子,但还不够
要
[This is the example,, but it is not enough] // length=2
[0]=This is the example,
[1]=but it is not enough
正如您所看到的,逗号仍然存在。我用这个正则表达式(?<=([,.!?;~])+)
做了这个。 但是我想要一些特殊的词(例如:但是)在[,.!?;~]
之后,然后不要分割那部分字符串。例如:
我希望将这句话分成这种形式,但该怎么做。因此,如果 任何人都可以提供帮助,这将是伟大的
要
[0]=I want this sentence to be split into this form, but how to do.
[1]=So if anyone can help,
[2]=that will be great
正如你所看到的那样,这部分(形式,但是)并没有在第一句中分割。
答案 0 :(得分:2)
我已经使用过:
(?<=a)b
以保留分隔符。a(?!b)
以排除停用词。请注意我在您提供的RegEx之后如何附加RegEx (?!\\s*(but|and|if))
。你可以将所有那些你要排除的单词(例如,但是,如果)放在由pipe symbol
分隔的括号内。
另请注意分隔符仍在其中。
<强>输出强>
Count of tokens = 3
I want this sentence to be split into this form, but how to do.
So if anyone can help,
that will be great
<强>代码强>
import java.lang.*;
public class HelloWorld {
public static void main(String[] args) {
String str = "I want this sentence to be split into this form, but how to do. So if anyone can help, that will be great";
//String delimiters = "\\s+|,\\s*|\\.\\s*";
String delimiters = "(?<=,)";
// analyzing the string
String[] tokensVal = str.split("(?<=([,.!?;~])+)(?!\\s*(but|and|if))");
// prints the number of tokens
System.out.println("Count of tokens = " + tokensVal.length);
for (String token: tokensVal) {
System.out.println(token);
}
}
}