簡體   English   中英

修改正則表達式以允許浮點數

[英]modify regex to allow floating point number

除其他模式外,我在代碼中使用這一模式來識別整數

Pattern patternNumber = Pattern.compile("[0-9]+");

要讀取輸入,我一直在使用*:

 String input = "x: 1.6 ..10;";
 String[] meta = a.split("(?:(?<=^|\\s)(?=\\S)|(?<=\\S|^)(?=\\s))\\b(?:(?<=\\S)(?=\\s|$)|(?<=\\s)(?=\\S|$))|\\b");

*由我在這里找到的東西提供 ,經過略微修改以適合。 我對Regex的經驗不足,但是那條線對我來說是神奇的。

然后,我繼續介紹浮點數:

Pattern patternNumber = Pattern.compile("\\d*\\.\\d+|\\d+");

但是現在我似乎無法正常工作。 對於浮動數字部分,它將拆分數字,從而得到:

1  
.  
6

我想要的是:

1.6

我發現如果單獨使用,它會起作用:

 String input = "1.6";
 String[] meta = a.split("\\D\\.\\D");

關於如何使此部分與split方法的其余表達式一起工作的任何想法嗎?

我認為split並不是達到您目的的最佳工具。

split將在正則表達式上分割您的輸入字符串。 例如,如果你不split1,2,3,apples用正則表達式,你會得到12, 3 ,和apples

您復雜的split正則表達式"(?:(?<=^|\\\\s)(?=\\\\S)|(?<=\\\\S|^)(?=\\\\s))\\\\b*(?:(?<=\\\\S)(?=\\\\s|$)|(?<=\\\\s)(?=\\\\S|$))|\\\\b"基本上是嘗試在邊界上分割字符串單詞之間(考慮到單詞位於字符串開頭/結尾或以.開頭( ..10 )之類的東西)。

相反,顯式地查找數字本身會容易得多! 不必在數字之間分割空格,而只需顯式地匹配數字。

因此,將正則表達式用於數字/浮點數\\\\d*\\\\.\\\\d+|\\\\d+並使用myMatcher.group()打印出匹配項(而不是拆分myMatcher.group()

例如:

String input = "x: 1.6 ..10;";
myPattern = Pattern.compile('\\d*\\.\\d+|\\d+');
myMatcher = Pattern.matcher(input);
while (myMatcher.find()) {
    System.out.println(myMatcher.group());
    // will print 1.6, .10
}

根據您想要的內容(例如相對於..10 ),可以調整正則表達式。

您可以分割除浮點數所用字符范圍之外的任何一系列字符。

String input="x: 1.6 ..10";
String[] meta=input.split("[^0-9.-]+");

對於上述內容,將為meta分配{“ 1.6”,“ ..10”}

String[] example="123, -.456, 78.910 : 11 : -12".split("[^0-9.-]+")

這將產生{“ 123”,“-。456”,“ 78.910”,“ 11”,“-12”}

暫無
暫無

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

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