[英]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.