欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

利用正則表達(dá)式匹配浮點(diǎn)型數(shù)據(jù)

 更新時(shí)間:2022年05月27日 11:32:24   作者:R峰  
正則表達(dá)式用于字符串處理、表單驗(yàn)證、日志數(shù)據(jù)分析等場合,實(shí)用高效,下面這篇文章主要給大家介紹了關(guān)于如何利用正則表達(dá)式匹配浮點(diǎn)型數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下

前言:

在開發(fā)中我們常常會(huì)使用到正則表達(dá)式,但很奇怪的是,每次你在使用正則表達(dá)式的時(shí)候你都發(fā)現(xiàn)你不會(huì)寫,不知道語法,可能你大概還記得一部分,但很模糊,對于正則表達(dá)式的語法真心記不住,別的程序猿是不是我不清楚,但我是就是這樣子,每次寫都會(huì)發(fā)現(xiàn)記不住了,然后又去網(wǎng)上查找資料,又進(jìn)行一次學(xué)習(xí),慢慢的發(fā)現(xiàn)基本語法你又會(huì)了,但實(shí)際上你還是不會(huì),可能是沒有完全明白或者在實(shí)際開發(fā)中沒有長期的使用導(dǎo)致,今天寫這篇文章純屬嘮嗑,其余的差不多都是復(fù)制粘貼了,另外說一下最近這一次翻開正則表達(dá)式去匹配浮點(diǎn)型數(shù)據(jù)做的一點(diǎn)思路,這一點(diǎn)和之前的是不一樣的。以前寫的正則去匹配浮點(diǎn)型的時(shí)候會(huì)發(fā)現(xiàn)無法完全正確的匹配,找了網(wǎng)上不少的高手或者菜鳥教程直接抄過來使用,發(fā)現(xiàn)其實(shí)都是有問題的,問題出在哪兒呢,大部分出現(xiàn)的問題都是在處理"0"和".“的情況下。你可能忘記了,我可以幫大家會(huì)議一下,當(dāng)然大部分還是對的,但是如果出現(xiàn)以0開頭的時(shí)候,你會(huì)發(fā)現(xiàn),我可以輸入n個(gè)0開頭也能匹配出來,雖然有點(diǎn)會(huì)把連續(xù)的多個(gè)0開頭的部分丟掉,但還是讓人感覺匹配的不是很好,我有強(qiáng)迫癥,這種匹配我認(rèn)為是不正確的,另外就是”.",當(dāng)你使用"."的時(shí)候,你會(huì)發(fā)現(xiàn)"xxxx."像這種格式的都能匹配,這是在逗我嗎,難道這也算正確的,這種情況我會(huì)直接否認(rèn)掉,但是在以往的開發(fā)中,我為了完后任務(wù),當(dāng)然也就不管了,沒那么嚴(yán)格,對于上面出現(xiàn)的這幾種情況我都心有不甘的默認(rèn)了,畢竟開發(fā)需要的時(shí)間不能都花在搞這種問題上,時(shí)間那么有限,所以我當(dāng)然就默許了這種問題的存在。今天呢又來搞了搞正則,還是相同的東西,我想自己寫了,所以自己開搞了,廢話有點(diǎn)多了,接下來就進(jìn)入主題吧。

正則表達(dá)式

1、非負(fù)浮點(diǎn)型:(^[1-9]\d*\.\d+$|^0\.\d+$|^[1-9]\d*$|^0$)

2、浮點(diǎn)型:(^-?[1-9]\d*\.\d+$|^-?0\.\d+$|^-?[1-9]\d*$|^0$)

上面的正則是怎么寫的呢?我來講一講

將浮點(diǎn)型數(shù)據(jù)做拆分,為啥要拆分呢,因?yàn)椴徊鸱趾茈y實(shí)現(xiàn)匹配浮點(diǎn)型字符串的正確格式

拆分成4類

1、非0開頭的浮點(diǎn)型(123.12)
2、0開頭的浮點(diǎn)型(0.12)
3、非0整數(shù)型
4、0

分別正則表達(dá)式

1、^[1-9]\d*\.\d+$
2、^0\.\d+$
3、^[1-9]\d*$
4、^0$

最后將4個(gè)表達(dá)式組合到一個(gè)中就得到最終的結(jié)果

(^[1-9]\d*\.\d+$|^0\.\d+$|^[1-9]\d*$|^0$)

浮點(diǎn)型是存在正負(fù)數(shù)的,所以還需要給得到的正則表達(dá)式添加符號

(^-?[1-9]\d*\.\d+$|^-?0\.\d+$|^-?[1-9]\d*$|^0$)

語法解析

符號描述
^以什么開頭
$以什么結(jié)尾
.匹配任意非\n的單字符
\.匹配.
+匹配一次或多次
*匹配0次或多次
?匹配0次或1次
x|y表示匹配x或者y
{n}表示匹配n次
[1-9]表示范圍1至9的任意1個(gè)數(shù)字
()強(qiáng)制優(yōu)先級,匹配括號需要在括號前加"\"
-表示負(fù)號

Java代碼

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexMatches {
	public static void main(String args[]) {
		String str = "";
		String pattern = "(^[1-9]\\d*\\.\\d+$|^0\\.\\d+$|^[1-9]\\d*$|^0$)";

		Pattern r = Pattern.compile(pattern);
		Matcher m = r.matcher(str);
		System.out.println(m.matches());
	}

}

附:正則表達(dá)式(同時(shí)匹配整型數(shù)和浮點(diǎn)數(shù))

pattern="^[1-9]*[0-9]?(\.[0-9]{1,2})?$"

總結(jié)

到此這篇關(guān)于利用正則表達(dá)式匹配浮點(diǎn)型數(shù)據(jù)的文章就介紹到這了,更多相關(guān)正則匹配浮點(diǎn)型數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論