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