簡體   English   中英

Java RegEx:拆分而不丟失令牌

[英]Java RegEx: Split without losing token

我正在嘗試編寫正則表達式,當有空格后跟一個負號后跟非空格時會拆分一個字符串。

例:

"x -y".split(regex)
returns: String[]{"x","-y"};

目前我正在使用

(?<=\\s)-(?=\\S+)

為我的正則表達式; 但這會返回“x”,“y”並吃掉負號。 有沒有辦法不吃負號?

謝謝!

您可以在第二組中包含減號

\\s(?=-\\S+)

這為您提供了理想的結果。

您正在捕獲用於拆分的減號。 因此它被刪除。

兩種可能的解決方

a)將它添加到第二個匹配,因為它必須在那里,否則拆分不會返回此結果b)嘗試(\\S*) (\\S.*)而是進行匹配。 這將返回兩個結果,“x”和“-y”。

如果split函數是如此簡單,可以考慮使用字符串split函數。 它比正則表達快得多。

var result = "x -y".split(" -");
if (result.length == 2) result[1] = "-" + result[1];

http://gskinner.com/RegExr/是一個檢查正則表達式的好網站。 如果你將你的正則表達式與Howards進行比較,你會看到差異。 如果你拿我的並做一場比賽。

圖案:

\s(?=\-\S)

例”

 String:  x -y z -x y z
Matches:   ^    ^

Carets指向匹配

演示:

示例代碼

如果要分割的值之間總是有空格,請考慮使用以下內容:

“x -y”.split(“ - ”);

只記得把-放回去(如果需要的話)。

暫無
暫無

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

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