[英]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
將在正則表達式上分割您的輸入字符串。 例如,如果你不split
的1,2,3,apples
用正則表達式,
你會得到1
, 2,
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.