日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

java正则 环视_正则表达式之环视(java)

發(fā)布時(shí)間:2024/9/19 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java正则 环视_正则表达式之环视(java) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

這段代碼中真正匹配到的字符串是”ld”,所謂的順序環(huán)視就是在匹配這個(gè)字符串前的那個(gè)位置。

相信大家現(xiàn)在應(yīng)該能夠推測(cè)出逆序環(huán)視了吧。匹配的是ld后面那個(gè)位置。

環(huán)視的例子

理解了上訴環(huán)視的列子我們來(lái)解決一開始那個(gè)問題。我們可以先分析一下,需要滿足這樣的條件。左邊要是數(shù)字,右邊的數(shù)字個(gè)數(shù)是3的倍數(shù)。

接下來(lái)就是對(duì)這個(gè)條件所實(shí)現(xiàn)的java代碼。

String str = "12345678";

Pattern pattern= Pattern.compile("(?<=\\d)(?=(\\d{3})+$)");

Matcher matcher=pattern.matcher(str);

System.out.printf(matcher.replaceAll(","));

(?<=\\d)這個(gè)表達(dá)式滿足了左邊是數(shù)字,可以想象一下。因?yàn)槟嫘颦h(huán)視是匹配字符串右邊的位置,也就是\d右邊的位置。那不就是說(shuō)明了這個(gè)位置的左邊是\d嗎。對(duì)(?=(\\d{3})+$)的理解可能有點(diǎn)不太容易。如果是孤立的(\\d{3})+$匹配的是從字符串末尾向左數(shù)字的個(gè)數(shù)正好是3的倍數(shù)。但是加入順序環(huán)視之后意義就不一樣了它能匹配右邊數(shù)字的個(gè)數(shù)正好是3的倍數(shù)的位置。$是關(guān)鍵,沒有了這個(gè)符號(hào),也就意味著可以不是從最后一個(gè)數(shù)字開始匹配的。這里可以結(jié)合程序好好的想想。這樣兩個(gè)條件就都滿足了。也就能夠匹配到正確的位置了。

但是如果給的字符串不一定是純數(shù)字,可能是”12345678$”這樣的形式,上訴的正則就不管用了。在這里我再引入兩個(gè)概念就是否定順序環(huán)視(?!)和否定逆序環(huán)視(?

在(?=表達(dá)式)中,意味表達(dá)式能夠匹配右側(cè)的文本,而(?!表達(dá)式)則以為表達(dá)式不能匹配右側(cè)的文本。那么可以將正則改成

"(?<=\\d)(?=(\\d{3})+(?!\\d))"也許你認(rèn)為可以將(?!\\d)改成\D,但是這兩個(gè)其實(shí)是有區(qū)別的,\D是匹配一個(gè)非數(shù)字的字符,也就是說(shuō)必須匹配一個(gè)字符。如果給你的數(shù)字是"12345678"這樣就不能得到匹配了.

總結(jié)

以上是生活随笔為你收集整理的java正则 环视_正则表达式之环视(java)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。