正则表达式 学习笔记4.3
生活随笔
收集整理的這篇文章主要介紹了
正则表达式 学习笔记4.3
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
下面看看逆序環(huán)視結(jié)構(gòu): public?class?GeneralSix?{ public?static?void?main(String[]?args)?{ String[]?strings?=?new?String[]{"see","bee","tee"};????? String[]?regexs?=?new?String[]{"(?<=s)ee","(?<!s)ee"}; for(String?regex:regexs){ for(String?str:strings){ Pattern?p?=?Pattern.compile(regex); Matcher?m?=?p.matcher(str); if(m.find()){ System.out.println("\""?+?str?+"\"?能夠匹配正則:"+regex); }else{ System.out.println("\""?+?str?+"\"?不能夠匹配正則:"+regex); } } System.out.println(""); } } } 運(yùn)行結(jié)果: "see"?能夠匹配正則:(?<=s)ee "bee"?不能夠匹配正則:(?<=s)ee "tee"?不能夠匹配正則:(?<=s)ee "see"?不能夠匹配正則:(?<!s)ee "bee"?能夠匹配正則:(?<!s)ee "tee"?能夠匹配正則:(?<!s)ee (?<=s)ee 肯定逆序環(huán)視結(jié)構(gòu),用來查找前面為s的ee。 (?<!s)ee 否定逆序環(huán)視結(jié)構(gòu),用來查找之前不為s的ee 環(huán)視的注意事項(xiàng): l?環(huán)式結(jié)構(gòu)僅用于布爾判斷,結(jié)構(gòu)內(nèi)的子表達(dá)式所匹配的文本,不會保存在整個(gè)表達(dá)式的匹配結(jié)果中 l?逆序環(huán)視結(jié)構(gòu)對子表達(dá)式存在限制 逆序環(huán)視結(jié)構(gòu)的限制 l?Perl,Python:逆序環(huán)視結(jié)構(gòu)中的子表達(dá)式必須為固定長度 就是不能使用任何量詞,也不能使用多選分支,長度不相同的多選結(jié)構(gòu) l?PHP,Java:逆序環(huán)視結(jié)構(gòu)中的子表達(dá)式可以不定長度,但必須由上限 就是不能使用?*、+?這樣的量詞。 l?.NET:逆序環(huán)視結(jié)構(gòu)中的子表達(dá)式完全沒有限制 從這個(gè)意義上說,.NET的正則表達(dá)式是做的最好的。 環(huán)視應(yīng)用實(shí)例: l?修整數(shù)值 l?要求:在數(shù)值中的合適位置插入逗號,將其修整為便于閱讀的形式 l?舉例: ·1234567890->1,234,567,890 ·123456->123,456 環(huán)視應(yīng)用實(shí)例: l?需要插入逗號的位置: ·左側(cè)至少出現(xiàn)一位數(shù)字,右側(cè)出現(xiàn)的數(shù)字位數(shù)是3的倍數(shù) l?正則表達(dá)式: ·(?=\d)(?=(\d{3}+)) public?class?GeneralSeven?{ public?static?void?main(String[]?args)?{ String[]?numbers?=?new?String[]{"123456","1234567890"};????? String?regex?=?"(?<=\\d)(?=(\\d{3})+)"; for(String?number:numbers){ System.out.println("替換前:"+number); System.out.println("替換后:"+number.replaceAll(regex,?",")); } } } 運(yùn)行結(jié)果: 替換前:123456 替換后:1,2,3,456 替換前:1234567890 替換后:1,2,3,4,5,6,7,890 這個(gè)結(jié)果有問題,123456應(yīng)該顯示為,123,456 1234567890?應(yīng)該為:1,234,567,890 問題出在: ?"(?<=\\d)(?=(\\d{3})+)"; 右邊出現(xiàn)的是3的倍數(shù),對這個(gè)字符串長度,就是匹配到哪個(gè)為止,我們并沒有限定。 對肯定順序環(huán)結(jié)構(gòu)對字符串的匹配加以更準(zhǔn)確的限制。 應(yīng)該再添加一個(gè)否定循環(huán)結(jié)構(gòu): String?regex?=?"(?<=\\d)(?=(\\d{3})+(?!\\d))"; 替換前:123456 替換后:123,456 替換前:1234567890 替換后:1,234,567,890 小結(jié): l?錨點(diǎn):規(guī)定匹配的位置 ·?\b、^、$、\A、\Z l?環(huán)視:以子表達(dá)式對位置進(jìn)行判斷 ·(?=)、(?!) ·(?<)、(?<!) ·環(huán)視只能進(jìn)行布爾判斷 ·逆序環(huán)視的限制 正則表達(dá)式 學(xué)習(xí)筆記4 完! 本文轉(zhuǎn)自jooben 51CTO博客,原文鏈接:http://blog.51cto.com/jooben/318587
總結(jié)
以上是生活随笔為你收集整理的正则表达式 学习笔记4.3的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于质量的联想:消费示范效应
- 下一篇: 正则表达式 (grep)