[英]How to split a string by triple dots or horizontal ellipsis
嘗試通過“...”分割字符串時遇到問題
String text ="Here…It is safer.";
我試過:
String [] output = text.split("[\\...]");
String [] output = text.split("\\.");
和許多其他人,但我還沒有找到解決方案。
我知道這個問題很簡單,但如果有人能解釋我應該如何使它工作,我會很高興。
匹配三個點的正則表達式是\\\\.{3}
或\\\\.\\\\.\\\\.
或[.][.][.]
或\\\\Q...\\\\E
。
[\\\\...]
和\\\\.
匹配單個點,因為字符類中的重復字符被視為單個字符。
水平省略號是一個不同的字符。 它不是正則表達式語言中的元字符,因此可以直接匹配,無需轉義:
String [] output = text.split("…");
多個點的正則表達式將是:
(\.)*
如果我沒記錯的話,Java 會需要這樣的東西:
(\\.)*
編輯:剛剛注意到你只要求三點。 由於已經有了正確的答案,我將把它留在這里以防萬一。
一般來說,你可以使用
String[] chunks = text.split("…|\\.{3}");
還要刪除封閉的空格:
String[] chunks = text.split("\\s*(?:…|\\.{3})\\s*");
請參閱此正則表達式演示。
如果您需要確保三個點沒有被其他點字符包圍,您可以添加環視:
String[] chunks = text.split("\\s*(?:…|(?<!\\.)\\.{3}(?!\\.))\\s*");
詳情:
\\s*
- 零個或多個空格(?:...)
- 一個非捕獲組…
- 省略號|
- 或(?<!\\.)
- 如果當前位置左側有一個點字符,則匹配失敗的負向后視\\.{3}
- 三點(?!\\.)
- 如果當前位置的右側有一個點字符,則匹配失敗的負前瞻。查看Java 演示:
String text = "Here…It is safer... The end.";
String[] chunks = text.split("\\s*(?:…|\\.{3})\\s*");
System.out.println(Arrays.toString(chunks));
// => [Here, It is safer, The end.]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.