簡體   English   中英

在這種情況下,我需要Java String.split使用什么正則表達式

[英]What regex do I need for Java String.split for this case

對不起,我真的不知道該如何說出來。 我想將數字字符與字母字符分開。 如果數字前面有連字符,我想保留它。

通過前面的問題,我發現"(?<=\\\\D)(?=\\\\d)|(?<=\\\\d)(?=\\\\D)"

我實現的是這樣的:

String s = "dfgsgf-89ff--989"; String[] pieces = s.split("(?<=\\\\D)(?=\\\\d)|(?<=\\\\d)(?=\\\\D)");

它給了我這個:

peices[0] = "dfgsgf"- peices[1] = "89" peices[2] = "ff--" peices[3] = "989"

我真正想要的是:

peices[0] = "dfgsgf" peices[0] = "-89" peices[0] = "ff" peices[0] = "--989"

什么正則表達式可以給我我想要的結果?

我已經看過Java模式頁面,但是仍然很難理解特殊構造的工作方式。

好像您想要這樣的東西,

String s = "dfgsgf-89ff--989";
String[] pieces = s.split("(?<=\\d)(?=\\D)|(?<=[A-Za-z])(?=[^A-Za-z])");
System.out.println(Arrays.toString(pieces));

要么

String[] pieces = s.split("(?<=\\d)(?=\\D)|(?<=[A-Za-z])(?=-*\\d)");

輸出:

[dfgsgf, -89, ff, --989]
  • (?<=\\\\d)(?=\\\\D)匹配存在於數字字符和非數字字符之間的邊界。

  • (?<=[A-Za-z])(?=[^A-Za-z])匹配存在於字母字符和非字母字符之間的邊界。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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