簡體   English   中英

如何使用使用給定模式的最后一次出現的正則表達式拆分 Java 中的字符串列表?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM