[英]How to split a List of Strings in Java with a regex that uses the last occurrence of given Pattern?
我对正则表达式世界很陌生。 给定一个字符串列表作为输入,我想使用标点符号模式的正则表达式拆分它们: "[!.?\\n]"
。
问题是,我想说明是否有多个标点符号在一起:
输入: "I want it now!!!"
输出: "I want it now!!"
输入: "Am I ok? Yeah, I'm fine!!!"
输出:[ "Am I ok"
, "Yeah, I'm fine!!"
]
您可以使用
[!.?\n](?![!.?\n])
在这里,一个!
, .
, ?
或换行符仅在没有跟随任何这些字符时才匹配。
或者,如果必须重复字符:
([!.?\n])(?!\1)
在这里,一个!
, .
, ?
或换行符仅在后面没有完全相同的字符时才匹配。
请参阅正则表达式演示 #1和正则表达式演示 #2 。
查看Java 演示:
String p = "[!.?\n](?![!.?\n])";
String p2 = "([!.?\n])(?!\\1)";
String s = "I want it now!!!";
System.out.println(Arrays.toString(s.split(p))); // => [I want it now!!]
System.out.println(Arrays.toString(s.split(p2))); // => [I want it now!!]
s = "Am I ok? Yeah, I'm fine!!!";
System.out.println(Arrays.toString(s.split(p))); // => [Am I ok, Yeah, I'm fine!!]
System.out.println(Arrays.toString(s.split(p2))); // => [Am I ok, Yeah, I'm fine!!]
String 的 split() 方法接受正则表达式作为定界符。
参考: https : //docs.oracle.com/javase/7/docs/api/java/lang/String.html#split(java.lang.String)
例子:
String str = "Am I ok? Yeah, I'm fine!!!";
String delimiters = "[!.?\n]";
String[] splitted = str.split(delimiters);
for(String part : splitted) {
System.out.print(part + "\n");
}
输出:
我还好吗
是的,我很好
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.