我需要使用Java的split()方法拆分字符串。如何为特定单词的分隔符编写正则表达式模式?例如,“和”?
我得到了用于分割空格和逗号[,\\s]
的模式,但我想添加单词and
,以便它也成为分隔符。
我尝试了许多组合,包括[,\\s]|(and)
,但没有运气。
答案 0 :(得分:3)
如果没有输入和所需的输出,确实不确定,但您可以将最后的模式更改为:\\s(?!and|,)|\\s*,\\s*|\\s+and\\s+
。
例如:
String toSplit = "Blah,blah, foo ,bar and blah again";
System.out.println(
Arrays.toString(
toSplit.split(
// ┌ whitespace not followed by "and" or ","
// | ┌ or
// | | ┌ 0/more whitespace, ",", 0/more whitespace
// | | | ┌ or
// | | | |┌ 1/more whitespace, "and", 1/more ws
// | | | ||
"\\s(?!and|,)|\\s*,\\s*|\\s+and\\s+"
)
)
);
<强>输出强>
[Blah, blah, foo, bar, blah, again]
答案 1 :(得分:1)
您可以尝试:
String[] toks = input.split( "\\s*\\band\b\\s*|[,\\s]" );
答案 2 :(得分:0)
您可以使用交替运算符。这是一个sample program:
String string = "My mother and I";
String[] parts = string.split("(?:[,\\s]|and)");
for (int i=0; i<parts.length; i++) {
System.out.println(parts[i]);
}
输出:
My
mother
I