当前位置:

正则表达式学习贴

访客 2024-04-24 891 0

1.前言

1.1为什么要学习正则表达式

1.1.1极速体验正则表达式威力

/***体验正则表达式的威力,给我们文本处理带来哪些便利*/publicclassRegexp_{publicstaticvoidmain(String[]args){//假定,编写了爬虫,从百度页面得到如下文本//Stringcontent="1995年,互联网的蓬勃发展给了Oak机会。业界为了使死板、单调的"//"静态网页能够“灵活”起来,急需一种软件技术来开发一种程序,这种程序可以通"//"过网络传播并且能够跨平台运行。于是,世界各大IT企业为此纷纷投入了大量的"//"人力、物力和财力。这个时候,Sun公司想起了那个被搁置起来很久的Oak,并且"//"重新审视了那个用软件编写的试验平台,由于它是按照嵌入式系统硬件平台体系结"//"构进行编写的,所以非常小,特别适用于网络上的传输系统,而Oak也是一种精简的"//"语言,程序非常小,适合在网络上传输。Sun公司首先推出了可以嵌入网页并且可以"//"随同网页在网络上传输的Applet(Applet是一种将小程序嵌入到网页中进行执行的技术),"//"并将Oak更名为Java(在申请注册商标时,发现Oak已经被人使用了,再想了一系列"//"名字之后,最终,使用了提议者在喝一杯Java咖啡时无意提到的Java词"//"语)。5月23日,Sun公司在Sunworld会议上正式发"//"布Java和HotJava浏览器。IBM、Apple、DEC、Adobe、HP、Oracle、Netscape和微软"//"等各大公司都纷纷停止了自己的相关开发项目,竞相购买了Java使用许可证,并为自己的产"//"品开发了相应的Java平台";//Stringcontent="<divclass=\"cr-contentnew-pmd\">\n"//"\n"//"<divclass=\"FYB_RD\">\n"//"<divclass=\"cr-titlec-gap-bottom-xsmall\"title=\"百度热榜\">\n"//"<spanclass=\"c-color-t\">百度热榜</span>\n"//"<divclass=\"opr-toplist1-updateopr-toplist1-link\"data-click=\"{fm:'beha'}\"style=\"position:relative;top:-1px;\">\n"//"<aclass=\"OP_LOG_BTNtoplist-refresh-btnc-font-normalc-color-gray2\"href=\"javascript:void(0);\"style=\"text-decoration:none;\">\n"//"<iclass=\"c-iconopr-toplist1-hot-refresh-icon\">&#xe619;</i><span>换一换</span>\n"//"</a>\n"//"</div>\n"//"</div>\n"//"<tableclass=\"c-tableopr-toplist1-table\">\n"//"<tbody>\n"//"<trclass=\"toplist1-tr\">\n"//"\n"//"<tdclass=\"toplist1-tdopr-toplist1-link\">\n"//"<spanclass=\"toplist1-hotc-index-singletoplist1-hot-toptoplist1-hot-0c-index-single-hot1\"style=\"opacity:1;\">\n"//"1\n"//"</span>\n"//"<atarget=\"_blank\"title=\"印度累计确诊病例已超2000万例\"href=\"/s?wd=印度累计确诊病例已超2000万例&rsv_idx=2&tn=百度home_pg&usm=3&ie=utf-8&rsv_cq=周星驰&rsv_dl=0_right_fyb_pchot_20811_01&rsv_pq=959254a60034f017&oq=周星驰&rsv_t=abf2fwdknQ1VTZk3EzyT0N5/pcQzkjPt5GRZchjVdppW7k8B8oI6R5IL3T0myEMmjxXM&rsf=dd45f07d69719294a2ea6117b312f1d7_1_10_1\"class=\"c-font-mediumc-color-topr-toplist1-subtitle\">\n"//"印度累计确诊病例已超2000万例\n"//"</a>\n"//"</td>\n"//"<tdclass=\"toplist1-right-numtoplist1-tdc-color-gray\"style=\"line-height:20px;position:relative;top:2px;\">473万</td>\n"//"</tr>\n"//"<trclass=\"toplist1-tr\">\n"//"\n"//"<tdclass=\"toplist1-tdopr-toplist1-link\">\n"//"<spanclass=\"toplist1-hotc-index-singletoplist1-hot-toptoplist1-hot-1c-index-single-hot2\"style=\"opacity:1;\">\n"//"2\n"//"</span>\n"//"<atarget=\"_blank\"title=\"五一酒店外卖订单涨2倍\"href=\"/s?wd=五一酒店外卖订单涨2倍&rsv_idx=2&tn=百度home_pg&usm=3&ie=utf-8&rsv_cq=周星驰&rsv_dl=0_right_fyb_pchot_20811_01&rsv_pq=959254a60034f017&oq=周星驰&rsv_t=32d1XGZJfky0Fpb6VgCcSv3Dnyp6JpbQ9TN+OvfioGkBC4T9m1Qp/FuwHnF9APvBaVr6&rsf=dd45f07d69719294a2ea6117b312f1d7_1_10_2\"class=\"c-font-mediumc-color-topr-toplist1-subtitle\">\n"//"五一酒店外卖订单涨2倍\n"//"</a>\n"//"<spanclass=\"c-textc-text-hotopr-toplist1-label\">热</span>\n"//"</td>\n"//"<tdclass=\"toplist1-right-numtoplist1-tdc-color-gray\"style=\"line-height:20px;position:relative;top:2px;\">441万</td>\n"//"</tr>\n"//"<trclass=\"toplist1-tr\">\n"//"\n"//"<tdclass=\"toplist1-tdopr-toplist1-link\">\n"//"<spanclass=\"toplist1-hotc-index-singletoplist1-hot-toptoplist1-hot-2c-index-single-hot3\"style=\"opacity:1;\">\n"//"3\n"//"</span>\n"//"<atarget=\"_blank\"title=\"印度籍无症状感染者密接曾参加婚宴\"href=\"/s?wd=印度籍无症状感染者密接曾参加婚宴&rsv_idx=2&tn=百度home_pg&usm=3&ie=utf-8&rsv_cq=周星驰&rsv_dl=0_right_fyb_pchot_20811_01&rsv_pq=959254a60034f017&oq=周星驰&rsv_t=79d48aiFJI7IvPi2BpW6Iy6VbHfAcV1uBdvZO8pb0chgf/K1Ic9Krgz3m43Aeg38VSM2&rsf=dd45f07d69719294a2ea6117b312f1d7_1_10_3\"class=\"c-font-mediumc-color-topr-toplist1-subtitle\">\n"//"印度籍无症状感染者密接曾参加婚宴\n"//"</a>\n"//"</td>\n"//"<tdclass=\"toplist1-right-numtoplist1-tdc-color-gray\"style=\"line-height:20px;position:relative;top:2px;\">425万</td>\n"//"</tr>\n"//"<trclass=\"toplist1-tr\">\n"//"\n"//"<tdclass=\"toplist1-tdopr-toplist1-link\">\n"//"<spanclass=\"toplist1-hotc-index-singletoplist1-hot-normal\"style=\"opacity:1;\">\n"//"4\n"//"</span>\n"//"<atarget=\"_blank\"title=\"这次是真正的国潮\"href=\"/s?wd=百度国潮季&rsv_idx=2&tn=百度home_pg&usm=3&ie=utf-8&rsv_cq=周星驰&rsv_dl=0_right_fyb_pchot_20811_01&rsv_pq=959254a60034f017&oq=周星驰&rsv_t=fecdvAqz0R7aEIPJxobhfnLd1otn461fSeGWr8pqx3cGZkJ/98S1hWn6sBK8/ujuf6Nx&rsf=dd45f07d69719294a2ea6117b312f1d7_1_10_4\"class=\"c-font-mediumc-color-topr-toplist1-subtitle\">\n"//"这次是真正的国潮\n"//"</a>\n"//"<spanclass=\"c-textc-text-recopr-toplist1-label\">荐</span>\n"//"</td>\n"//"<tdclass=\"toplist1-right-numtoplist1-tdc-color-gray\"style=\"line-height:20px;position:relative;top:2px;\">396万</td>\n"//"</tr>\n"//"<trclass=\"toplist1-tr\">\n"//"\n"//"<tdclass=\"toplist1-tdopr-toplist1-link\">\n"//"<spanclass=\"toplist1-hotc-index-singletoplist1-hot-normal\"style=\"opacity:1;\">\n"//"5\n"//"</span>\n"//"<atarget=\"_blank\"title=\"墨西哥轨交设施坍塌监控曝光\"href=\"/s?wd=墨西哥轨交设施坍塌监控曝光&rsv_idx=2&tn=百度home_pg&usm=3&ie=utf-8&rsv_cq=周星驰&rsv_dl=0_right_fyb_pchot_20811_01&rsv_pq=959254a60034f017&oq=周星驰&rsv_t=83bfOvia+OoGl9qutbaK5+fI3hDeC3FAdCyV/4cPmjZE6QeMZoMNyLCMOFpF7gkN8Tp4&rsf=dd45f07d69719294a2ea6117b312f1d7_1_10_5\"class=\"c-font-mediumc-color-topr-toplist1-subtitle\">\n"//"墨西哥轨交设施坍塌监控曝光\n"//"</a>\n"//"</td>\n"//"<tdclass=\"toplist1-right-numtoplist1-tdc-color-gray\"style=\"line-height:20px;position:relative;top:2px;\">382万</td>\n"//"</tr>\n"//"<trclass=\"toplist1-tr\">\n"//"\n"//"<tdclass=\"toplist1-tdopr-toplist1-link\">\n"//"<spanclass=\"toplist1-hotc-index-singletoplist1-hot-normal\"style=\"opacity:1;\">\n"//"6\n"//"</span>\n"//"<atarget=\"_blank\"title=\"印度供应全球六成新冠疫苗\"href=\"/s?wd=印度供应全球六成新冠疫苗&rsv_idx=2&tn=百度home_pg&usm=3&ie=utf-8&rsv_cq=周星驰&rsv_dl=0_right_fyb_pchot_20811_01&rsv_pq=959254a60034f017&oq=周星驰&rsv_t=3b01YqbH3sPvmvx8Ck5Gq9NosRAi7F+ITPb5d/bYkMlFMu2Fr/mPyqbcGiCPL1NUup5f&rsf=dd45f07d69719294a2ea6117b312f1d7_1_10_6\"class=\"c-font-mediumc-color-topr-toplist1-subtitle\">\n"//"印度供应全球六成新冠疫苗\n"//"</a>\n"//"</td>\n"//"<tdclass=\"toplist1-right-numtoplist1-tdc-color-gray\"style=\"line-height:20px;position:relative;top:2px;\">369万</td>\n"//"</tr>\n"//"<trclass=\"toplist1-tr\">\n"//"\n"//"<tdclass=\"toplist1-tdopr-toplist1-link\">\n"//"<spanclass=\"toplist1-hotc-index-singletoplist1-hot-normal\"style=\"opacity:1;\">\n"//"7\n"//"</span>\n"//"<atarget=\"_blank\"title=\"少女因病辍学4年写下500篇文章\"href=\"/s?wd=少女因病辍学4年写下500篇文章&rsv_idx=2&tn=百度home_pg&usm=3&ie=utf-8&rsv_cq=周星驰&rsv_dl=0_right_fyb_pchot_20811_01&rsv_pq=959254a60034f017&oq=周星驰&rsv_t=fac0t6ySTlYJYViu68pbr90yeoYsdLzmJ3yoFS63MgmLVAe1EOH2pJPITFtCLWasq1Y5&rsf=dd45f07d69719294a2ea6117b312f1d7_1_10_7\"class=\"c-font-mediumc-color-topr-toplist1-subtitle\">\n"//"少女因病辍学4年写下500篇文章\n"//"</a>\n"//"</td>\n"//"<tdclass=\"toplist1-right-numtoplist1-tdc-color-gray\"style=\"line-height:20px;position:relative;top:2px;\">356万</td>\n"//"</tr>\n"//"<trclass=\"toplist1-tr\">\n"//"\n"//"<tdclass=\"toplist1-tdopr-toplist1-link\">\n"//"<spanclass=\"toplist1-hotc-index-singletoplist1-hot-normal\"style=\"opacity:1;\">\n"//"8\n"//"</span>\n"//"<atarget=\"_blank\"title=\"售价2200元的“神药”成本仅50元\"href=\"/s?wd=售价2200元的“神药”成本仅50元&rsv_idx=2&tn=百度home_pg&usm=3&ie=utf-8&rsv_cq=周星驰&rsv_dl=0_right_fyb_pchot_20811_01&rsv_pq=959254a60034f017&oq=周星驰&rsv_t=cdddugWl4sZtX04FYWIZbl9Cyyc7pZWX9sh0KvfPqgzqNBivbI2vdiJMrq72Bq4gXqHk&rsf=dd45f07d69719294a2ea6117b312f1d7_1_10_8\"class=\"c-font-mediumc-color-topr-toplist1-subtitle\">\n"//"售价2200元的“神药”成本仅50元\n"//"</a>\n"//"</td>\n"//"<tdclass=\"toplist1-right-numtoplist1-tdc-color-gray\"style=\"line-height:20px;position:relative;top:2px;\">343万</td>\n"//"</tr>\n"//"<trclass=\"toplist1-tr\">\n"//"\n"//"<tdclass=\"toplist1-tdopr-toplist1-link\">\n"//"<spanclass=\"toplist1-hotc-index-singletoplist1-hot-normal\"style=\"opacity:1;\">\n"//"9\n"//"</span>\n"//"<atarget=\"_blank\"title=\"央视五四晚会节目单出炉\"href=\"/s?wd=央视五四晚会节目单出炉&rsv_idx=2&tn=百度home_pg&usm=3&ie=utf-8&rsv_cq=周星驰&rsv_dl=0_right_fyb_pchot_20811_01&rsv_pq=959254a60034f017&oq=周星驰&rsv_t=2f67NoNuMuoV3aLTdna3uIzyEJGhxDThWFkMH0z1ZV0obHc0WxGWL2QaN0roTrKMjCYC&rsf=dd45f07d69719294a2ea6117b312f1d7_1_10_9\"class=\"c-font-mediumc-color-topr-toplist1-subtitle\">\n"//"央视五四晚会节目单出炉\n"//"</a>\n"//"</td>\n"//"<tdclass=\"toplist1-right-numtoplist1-tdc-color-gray\"style=\"line-height:20px;position:relative;top:2px;\">331万</td>\n"//"</tr>\n"//"<trclass=\"toplist1-tr\">\n"//"\n"//"<tdclass=\"toplist1-tdopr-toplist1-link\">\n"//"<spanclass=\"toplist1-hotc-index-singletoplist1-hot-normalopr-toplist1-one-font\"style=\"opacity:1;\">\n"//"10\n"//"</span>\n"//"<atarget=\"_blank\"title=\"91岁巴菲特选出继任者\"href=\"/s?wd=91岁巴菲特选出继任者&rsv_idx=2&tn=百度home_pg&usm=3&ie=utf-8&rsv_cq=周星驰&rsv_dl=0_right_fyb_pchot_20811_01&rsv_pq=959254a60034f017&oq=周星驰&rsv_t=7d429xUUJZLFLSMjZR6habx13+dASsly6zcvmnhdiq5T+Y8PaleKBxypUgU7onDWZfXf&rsf=dd45f07d69719294a2ea6117b312f1d7_1_10_10\"class=\"c-font-mediumc-color-topr-toplist1-subtitle\">\n"//"91岁巴菲特选出继任者\n"//"</a>\n"//"</td>\n"//"<tdclass=\"toplist1-right-numtoplist1-tdc-color-gray\"style=\"line-height:20px;position:relative;top:2px;\">320万</td>\n"//"</tr>\n"//"</tbody>\n"//"<tbodystyle=\"display:none\">\n"//"<trclass=\"toplist1-tr\">\n"//"\n"//"<tdclass=\"toplist1-tdopr-toplist1-link\">\n"//"<spanclass=\"toplist1-hotc-index-singletoplist1-hot-normalopr-toplist1-one-font\"style=\"opacity:1;\">\n"//"11\n"//"</span>\n"//"<atarget=\"_blank\"title=\"8旬退休教授为贫困生捐70万\"href=\"/s?wd=8旬退休教授为贫困生捐70万&rsv_idx=2&tn=百度home_pg&usm=3&ie=utf-8&rsv_cq=周星驰&rsv_dl=0_right_fyb_pchot_20811_01&rsv_pq=959254a60034f017&oq=周星驰&rsv_t=f57amyz02ho2MnkxxIB0zWHTw9CDEypEMVB2PBlBNcy37/J9T1VwBcokXXZOxr2jvv9G&rsf=dd45f07d69719294a2ea6117b312f1d7_11_20_11\"class=\"c-font-mediumc-color-topr-toplist1-subtitle\">\n"//"8旬退休教授为贫困生捐70万\n"//"</a>\n"//"<spanclass=\"c-textc-text-newopr-toplist1-label\">新</span>\n"//"</td>\n"//"<tdclass=\"toplist1-right-numtoplist1-tdc-color-gray\"style=\"line-height:20px;position:relative;top:2px;\">309万</td>\n"//"</tr>\n"//"<trclass=\"toplist1-tr\">\n"//"\n"//"<tdclass=\"toplist1-tdopr-toplist1-link\">\n"//"<spanclass=\"toplist1-hotc-index-singletoplist1-hot-normalopr-toplist1-one-font\"style=\"opacity:1;\">\n"//"12\n"//"</span>\n"//"<atarget=\"_blank\"title=\"女子为给偶像删帖被骗8000元\"href=\"/s?wd=女子为给偶像删帖被骗8000元&rsv_idx=2&tn=百度home_pg&usm=3&ie=utf-8&rsv_cq=周星驰&rsv_dl=0_right_fyb_pchot_20811_01&rsv_pq=959254a60034f017&oq=周星驰&rsv_t=86c1ICmWkGtTaB7UqvG0ysxoljgkHlWe+WHEX0V8s8zxcKIzmN2gkudtAYvsBpNvYDOj&rsf=dd45f07d69719294a2ea6117b312f1d7_11_20_12\"class=\"c-font-mediumc-color-topr-toplist1-subtitle\">\n"//"女子为给偶像删帖被骗8000元\n"//"</a>\n"//"</td>\n"//"<tdclass=\"toplist1-right-numtoplist1-tdc-color-gray\"style=\"line-height:20px;position:relative;top:2px;\">298万</td>\n"//"</tr>\n"//"<trclass=\"toplist1-tr\">\n"//"\n"//"<tdclass=\"toplist1-tdopr-toplist1-link\">\n"//"<spanclass=\"toplist1-hotc-index-singletoplist1-hot-normalopr-toplist1-one-font\"style=\"opacity:1;\">\n"//"13\n"//"</span>\n"//"<atarget=\"_blank\"title=\"比尔·盖茨夫妇离婚女儿发声\"href=\"/s?wd=比尔·盖茨夫妇离婚女儿发声&rsv_idx=2&tn=百度home_pg&usm=3&ie=utf-8&rsv_cq=周星驰&rsv_dl=0_right_fyb_pchot_20811_01&rsv_pq=959254a60034f017&oq=周星驰&rsv_t=896490eILJu/QTiRLPviDBzceznJ4WDcrcARkLwmE0XCIpTu3PrKFwO6F4UrH7PInzJf&rsf=dd45f07d69719294a2ea6117b312f1d7_11_20_13\"class=\"c-font-mediumc-color-topr-toplist1-subtitle\">\n"//"比尔·盖茨夫妇离婚女儿发声\n"//"</a>\n"//"<spanclass=\"c-textc-text-hotopr-toplist1-label\">热</span>\n"//"</td>\n"//"<tdclass=\"toplist1-right-numtoplist1-tdc-color-gray\"style=\"line-height:20px;position:relative;top:2px;\">287万</td>\n"//"</tr>\n"//"<trclass=\"toplist1-tr\">\n"//"\n"//"<tdclass=\"toplist1-tdopr-toplist1-link\">\n"//"<spanclass=\"toplist1-hotc-index-singletoplist1-hot-normalopr-toplist1-one-font\"style=\"opacity:1;\">\n"//"14\n"//"</span>\n"//"<atarget=\"_blank\"title=\"学生18种语言演唱追梦赤子心\"href=\"/s?wd=学生18种语言演唱追梦赤子心&rsv_idx=2&tn=百度home_pg&usm=3&ie=utf-8&rsv_cq=周星驰&rsv_dl=0_right_fyb_pchot_20811_01&rsv_pq=959254a60034f017&oq=周星驰&rsv_t=3f72LcjlesGwBj0Clhi+b/2VReCDWnVIAhD2gY8ek2xyxp7CdywyGDo4umYaRhP3221H&rsf=dd45f07d69719294a2ea6117b312f1d7_11_20_14\"class=\"c-font-mediumc-color-topr-toplist1-subtitle\">\n"//"学生18种语言演唱追梦赤子心\n"//"</a>\n"//"</td>\n"//"<tdclass=\"toplist1-right-numtoplist1-tdc-color-gray\"style=\"line-height:20px;position:relative;top:2px;\">277万</td>\n"//"</tr>\n"//"<trclass=\"toplist1-tr\">\n"//"\n"//"<tdclass=\"toplist1-tdopr-toplist1-link\">\n"//"<spanclass=\"toplist1-hotc-index-singletoplist1-hot-normalopr-toplist1-one-font\"style=\"opacity:1;\">\n"//"15\n"//"</span>\n"//"<atarget=\"_blank\"title=\"少林寺500多年古碑遭熊孩子刻画\"href=\"/s?wd=少林寺500多年古碑遭熊孩子刻画&rsv_idx=2&tn=百度home_pg&usm=3&ie=utf-8&rsv_cq=周星驰&rsv_dl=0_right_fyb_pchot_20811_01&rsv_pq=959254a60034f017&oq=周星驰&rsv_t=c269Co2zIeZtuzyqqsvebsim1bobIW++jfTjg71RfZnwmws3ig67InXI3vNu4fzOeXWU&rsf=dd45f07d69719294a2ea6117b312f1d7_11_20_15\"class=\"c-font-mediumc-color-topr-toplist1-subtitle\">\n"//"少林寺500多年古碑遭熊孩子刻画\n"//"</a>\n"//"</td>\n"//"<tdclass=\"toplist1-right-numtoplist1-tdc-color-gray\"style=\"line-height:20px;position:relative;top:2px;\">268万</td>\n"//"</tr>\n"//"<trclass=\"toplist1-tr\">\n"//"\n"//"<tdclass=\"toplist1-tdopr-toplist1-link\">\n"//"<spanclass=\"toplist1-hotc-index-singletoplist1-hot-normalopr-toplist1-one-font\"style=\"opacity:1;\">\n"//"16\n"//"</span>\n"//"<atarget=\"_blank\"title=\"比尔·盖茨发文希望保护隐私\"href=\"/s?wd=比尔·盖茨发文希望保护隐私&rsv_idx=2&tn=百度home_pg&usm=3&ie=utf-8&rsv_cq=周星驰&rsv_dl=0_right_fyb_pchot_20811_01&rsv_pq=959254a60034f017&oq=周星驰&rsv_t=10dcmr4dz3wKqdfJkFOOE0IXaxZmGtm1I6jFQji1C3vuy4HISFpAUfeeI7sh133z7hSq&rsf=dd45f07d69719294a2ea6117b312f1d7_11_20_16\"class=\"c-font-mediumc-color-topr-toplist1-subtitle\">\n"//"比尔·盖茨发文希望保护隐私\n"//"</a>\n"//"</td>\n"//"<tdclass=\"toplist1-right-numtoplist1-tdc-color-gray\"style=\"line-height:20px;position:relative;top:2px;\">258万</td>\n"//"</tr>\n"//"<trclass=\"toplist1-tr\">\n"//"\n"//"<tdclass=\"toplist1-tdopr-toplist1-link\">\n"//"<spanclass=\"toplist1-hotc-index-singletoplist1-hot-normalopr-toplist1-one-font\"style=\"opacity:1;\">\n"//"17\n"//"</span>\n"//"<atarget=\"_blank\"title=\"韩国青年排队抢购奢侈品\"href=\"/s?wd=韩国青年排队抢购奢侈品&rsv_idx=2&tn=百度home_pg&usm=3&ie=utf-8&rsv_cq=周星驰&rsv_dl=0_right_fyb_pchot_20811_01&rsv_pq=959254a60034f017&oq=周星驰&rsv_t=d978WNnZlLwmlF+vU8n7Zc/cwTRpOrntJEL93BpoZZKZqw3IqNftMckCKsE4lxm1cKDq&rsf=dd45f07d69719294a2ea6117b312f1d7_11_20_17\"class=\"c-font-mediumc-color-topr-toplist1-subtitle\">\n"//"韩国青年排队抢购奢侈品\n"//"</a>\n"//"</td>\n"//"<tdclass=\"toplist1-right-numtoplist1-tdc-color-gray\"style=\"line-height:20px;position:relative;top:2px;\">249万</td>\n"//"</tr>\n"//"<trclass=\"toplist1-tr\">\n"//"\n"//"<tdclass=\"toplist1-tdopr-toplist1-link\">\n"//"<spanclass=\"toplist1-hotc-index-singletoplist1-hot-normalopr-toplist1-one-font\"style=\"opacity:1;\">\n"//"18\n"//"</span>\n"//"<atarget=\"_blank\"title=\"李开复谈盖茨夫妇离婚\"href=\"/s?wd=李开复谈盖茨夫妇离婚&rsv_idx=2&tn=百度home_pg&usm=3&ie=utf-8&rsv_cq=周星驰&rsv_dl=0_right_fyb_pchot_20811_01&rsv_pq=959254a60034f017&oq=周星驰&rsv_t=8b26lOeJYdFsbzrlKHrtA+qP+72mxliaQQeuWBA4WevfUhj2awgHfQiliYz/KHekOWLq&rsf=dd45f07d69719294a2ea6117b312f1d7_11_20_18\"class=\"c-font-mediumc-color-topr-toplist1-subtitle\">\n"//"李开复谈盖茨夫妇离婚\n"//"</a>\n"//"</td>\n"//"<tdclass=\"toplist1-right-numtoplist1-tdc-color-gray\"style=\"line-height:20px;position:relative;top:2px;\">240万</td>\n"//"</tr>\n"//"<trclass=\"toplist1-tr\">\n"//"\n"//"<tdclass=\"toplist1-tdopr-toplist1-link\">\n"//"<spanclass=\"toplist1-hotc-index-singletoplist1-hot-normalopr-toplist1-one-font\"style=\"opacity:1;\">\n"//"19\n"//"</span>\n"//"<atarget=\"_blank\"title=\"秦昊看伊能静演出\"href=\"/s?wd=秦昊看伊能静演出&rsv_idx=2&tn=百度home_pg&usm=3&ie=utf-8&rsv_cq=周星驰&rsv_dl=0_right_fyb_pchot_20811_01&rsv_pq=959254a60034f017&oq=周星驰&rsv_t=1b57U64YpaHqGvduMc0cFIo7gLTIrQ4lM21aDbL4sxYl0oynCKAEFut9HCWJNIzytl/a&rsf=dd45f07d69719294a2ea6117b312f1d7_11_20_19\"class=\"c-font-mediumc-color-topr-toplist1-subtitle\">\n"//"秦昊看伊能静演出\n"//"</a>\n"//"</td>\n"//"<tdclass=\"toplist1-right-numtoplist1-tdc-color-gray\"style=\"line-height:20px;position:relative;top:2px;\">232万</td>\n"//"</tr>\n"//"<trclass=\"toplist1-tr\">\n"//"\n"//"<tdclass=\"toplist1-tdopr-toplist1-link\">\n"//"<spanclass=\"toplist1-hotc-index-singletoplist1-hot-normal\"style=\"opacity:1;\">\n"//"20\n"//"</span>\n"//"<atarget=\"_blank\"title=\"医生景区救人获终身免门票\"href=\"/s?wd=医生景区救人获终身免门票&rsv_idx=2&tn=百度home_pg&usm=3&ie=utf-8&rsv_cq=周星驰&rsv_dl=0_right_fyb_pchot_20811_01&rsv_pq=959254a60034f017&oq=周星驰&rsv_t=a286ytHBPeiBaO6ftRxaSzW/HXDoDA1d+MHbSGjzMIU9mhXPBiNYKGK0S142wLZGMl1B&rsf=dd45f07d69719294a2ea6117b312f1d7_11_20_20\"class=\"c-font-mediumc-color-topr-toplist1-subtitle\">\n"//"医生景区救人获终身免门票\n"//"</a>\n"//"</td>\n"//"<tdclass=\"toplist1-right-numtoplist1-tdc-color-gray\"style=\"line-height:20px;position:relative;top:2px;\">224万</td>\n"//"</tr>\n"//"</tbody>\n"//"<tbodystyle=\"display:none\">\n"//"<trclass=\"toplist1-tr\">\n"//"\n"//"<tdclass=\"toplist1-tdopr-toplist1-link\">\n"//"<spanclass=\"toplist1-hotc-index-singletoplist1-hot-normal\"style=\"opacity:1;\">\n"//"21\n"//"</span>\n"//"<atarget=\"_blank\"title=\"31省区市新增确诊17例均为境外输入\"href=\"/s?wd=31省区市新增确诊17例均为境外输入&rsv_idx=2&tn=百度home_pg&usm=3&ie=utf-8&rsv_cq=周星驰&rsv_dl=0_right_fyb_pchot_20811_01&rsv_pq=959254a60034f017&oq=周星驰&rsv_t=df27aIqxHhQIcAkMctyNR3AZ7+c+AFGjTdYqB9bg2gSDU95OAwTih0Zlw+45tFVdw/b+&rsf=dd45f07d69719294a2ea6117b312f1d7_21_30_21\"class=\"c-font-mediumc-color-topr-toplist1-subtitle\">\n"//"31省区市新增确诊17例均为境外输入\n"//"</a>\n"//"<spanclass=\"c-textc-text-hotopr-toplist1-label\">热</span>\n"//"</td>\n"//"<tdclass=\"toplist1-right-numtoplist1-tdc-color-gray\"style=\"line-height:20px;position:relative;top:2px;\">216万</td>\n"//"</tr>\n"//"<trclass=\"toplist1-tr\">\n"//"\n"//"<tdclass=\"toplist1-tdopr-toplist1-link\">\n"//"<spanclass=\"toplist1-hotc-index-singletoplist1-hot-normal\"style=\"opacity:1;\">\n"//"22\n"//"</span>\n"//"<atarget=\"_blank\"title=\"95后00后成红色旅游出游主力\"href=\"/s?wd=95后00后成红色旅游出游主力&rsv_idx=2&tn=百度home_pg&usm=3&ie=utf-8&rsv_cq=周星驰&rsv_dl=0_right_fyb_pchot_20811_01&rsv_pq=959254a60034f017&oq=周星驰&rsv_t=9684bWy5j1gUATPXvoTZQmKIrX6gg/yj/5x1JWcvXjz/pWmHSKBymZqnL6Bb3Ypms7Aq&rsf=dd45f07d69719294a2ea6117b312f1d7_21_30_22\"class=\"c-font-mediumc-color-topr-toplist1-subtitle\">\n"//"95后00后成红色旅游出游主力\n"//"</a>\n"//"</td>\n"//"<tdclass=\"toplist1-right-numtoplist1-tdc-color-gray\"style=\"line-height:20px;position:relative;top:2px;\">208万</td>\n"//"</tr>\n"//"<trclass=\"toplist1-tr\">\n"//"\n"//"<tdclass=\"toplist1-tdopr-toplist1-link\">\n"//"<spanclass=\"toplist1-hotc-index-singletoplist1-hot-normal\"style=\"opacity:1;\">\n"//"23\n"//"</span>\n"//"<atarget=\"_blank\"title=\"男子爬玻璃栈桥防护栏被逐出景区\"href=\"/s?wd=男子爬玻璃栈桥防护栏被逐出景区&rsv_idx=2&tn=百度home_pg&usm=3&ie=utf-8&rsv_cq=周星驰&rsv_dl=0_right_fyb_pchot_20811_01&rsv_pq=959254a60034f017&oq=周星驰&rsv_t=d38b0oqpz16NpoH6i3B45MNJZgknKbf4Lyjmkh7DPDc/D1v8u+K9diDAcH/zyUUwJufK&rsf=dd45f07d69719294a2ea6117b312f1d7_21_30_23\"class=\"c-font-mediumc-color-topr-toplist1-subtitle\">\n"//"男子爬玻璃栈桥防护栏被逐出景区\n"//"</a>\n"//"</td>\n"//"<tdclass=\"toplist1-right-numtoplist1-tdc-color-gray\"style=\"line-height:20px;position:relative;top:2px;\">201万</td>\n"//"</tr>\n"//"<trclass=\"toplist1-tr\">\n"//"\n"//"<tdclass=\"toplist1-tdopr-toplist1-link\">\n"//"<spanclass=\"toplist1-hotc-index-singletoplist1-hot-normal\"style=\"opacity:1;\">\n"//"24\n"//"</span>\n"//"<atarget=\"_blank\"title=\"美国近三分之一人完成疫苗两针接种\"href=\"/s?wd=美国近三分之一人完成疫苗两针接种&rsv_idx=2&tn=百度home_pg&usm=3&ie=utf-8&rsv_cq=周星驰&rsv_dl=0_right_fyb_pchot_20811_01&rsv_pq=959254a60034f017&oq=周星驰&rsv_t=8543F244DfP53qkV4K1yeWjVehoD8tduIx+0VOZb+VVSNxNFMdIpULyxiQ+lsUdv51hM&rsf=dd45f07d69719294a2ea6117b312f1d7_21_30_24\"class=\"c-font-mediumc-color-topr-toplist1-subtitle\">\n"//"美国近三分之一人完成疫苗两针接种\n"//"</a>\n"//"</td>\n"//"<tdclass=\"toplist1-right-numtoplist1-tdc-color-gray\"style=\"line-height:20px;position:relative;top:2px;\">194万</td>\n"//"</tr>\n"//"<trclass=\"toplist1-tr\">\n"//"\n"//"<tdclass=\"toplist1-tdopr-toplist1-link\">\n"//"<spanclass=\"toplist1-hotc-index-singletoplist1-hot-normal\"style=\"opacity:1;\">\n"//"25\n"//"</span>\n"//"<atarget=\"_blank\"title=\"萧敬腾在广州参加活动下大雨\"href=\"/s?wd=萧敬腾在广州参加活动下大雨&rsv_idx=2&tn=百度home_pg&usm=3&ie=utf-8&rsv_cq=周星驰&rsv_dl=0_right_fyb_pchot_20811_01&rsv_pq=959254a60034f017&oq=周星驰&rsv_t=04613AvycY3GvCKQQB6P6T0DRTH5ObmzFA5b0Bz4CrxddgOpuldpmQfSbhVStcmZoHjI&rsf=dd45f07d69719294a2ea6117b312f1d7_21_30_25\"class=\"c-font-mediumc-color-topr-toplist1-subtitle\">\n"//"萧敬腾在广州参加活动下大雨\n"//"</a>\n"//"</td>\n"//"<tdclass=\"toplist1-right-numtoplist1-tdc-color-gray\"style=\"line-height:20px;position:relative;top:2px;\">187万</td>\n"//"</tr>\n"//"<trclass=\"toplist1-tr\">\n"//"\n"//"<tdclass=\"toplist1-tdopr-toplist1-link\">\n"//"<spanclass=\"toplist1-hotc-index-singletoplist1-hot-normal\"style=\"opacity:1;\">\n"//"26\n"//"</span>\n"//"<atarget=\"_blank\"title=\"女子夜店内抱娃蹦迪\"href=\"/s?wd=女子夜店内抱娃蹦迪&rsv_idx=2&tn=百度home_pg&usm=3&ie=utf-8&rsv_cq=周星驰&rsv_dl=0_right_fyb_pchot_20811_01&rsv_pq=959254a60034f017&oq=周星驰&rsv_t=466c7vsJ6Lu+EK8aRHLwwL+f8wHeXjubIYyiewtTQq+qQcV9CTRxakAwZDoh25aVmsQA&rsf=dd45f07d69719294a2ea6117b312f1d7_21_30_26\"class=\"c-font-mediumc-color-topr-toplist1-subtitle\">\n"//"女子夜店内抱娃蹦迪\n"//"</a>\n"//"</td>\n"//"<tdclass=\"toplist1-right-numtoplist1-tdc-color-gray\"style=\"line-height:20px;position:relative;top:2px;\">181万</td>\n"//"</tr>\n"//"<trclass=\"toplist1-tr\">\n"//"\n"//"<tdclass=\"toplist1-tdopr-toplist1-link\">\n"//"<spanclass=\"toplist1-hotc-index-singletoplist1-hot-normal\"style=\"opacity:1;\">\n"//"27\n"//"</span>\n"//"<atarget=\"_blank\"title=\"姚明说CBA要给年轻球员机会\"href=\"/s?wd=姚明说CBA要给年轻球员机会&rsv_idx=2&tn=百度home_pg&usm=3&ie=utf-8&rsv_cq=周星驰&rsv_dl=0_right_fyb_pchot_20811_01&rsv_pq=959254a60034f017&oq=周星驰&rsv_t=5dcdVKFZQj03MQo3bSpvWCa2nmuarhCkyaGwUTpme7K7Tp4Fvbr9Xe/WFNJOFSHLFv3w&rsf=dd45f07d69719294a2ea6117b312f1d7_21_30_27\"class=\"c-font-mediumc-color-topr-toplist1-subtitle\">\n"//"姚明说CBA要给年轻球员机会\n"//"</a>\n"//"</td>\n"//"<tdclass=\"toplist1-right-numtoplist1-tdc-color-gray\"style=\"line-height:20px;position:relative;top:2px;\">174万</td>\n"//"</tr>\n"//"<trclass=\"toplist1-tr\">\n"//"\n"//"<tdclass=\"toplist1-tdopr-toplist1-link\">\n"//"<spanclass=\"toplist1-hotc-index-singletoplist1-hot-normal\"style=\"opacity:1;\">\n"//"28\n"//"</span>\n"//"<atarget=\"_blank\"title=\"黄秋生在台隔离期间被诈骗\"href=\"/s?wd=黄秋生在台隔离期间被诈骗&rsv_idx=2&tn=百度home_pg&usm=3&ie=utf-8&rsv_cq=周星驰&rsv_dl=0_right_fyb_pchot_20811_01&rsv_pq=959254a60034f017&oq=周星驰&rsv_t=9f9app/vUpebIOcqeTXr8MAHsM5IZp4JJ8oCLPiLfIu6DeChK1Z3jv6Ttr3i3hUUNhcW&rsf=dd45f07d69719294a2ea6117b312f1d7_21_30_28\"class=\"c-font-mediumc-color-topr-toplist1-subtitle\">\n"//"黄秋生在台隔离期间被诈骗\n"//"</a>\n"//"</td>\n"//"<tdclass=\"toplist1-right-numtoplist1-tdc-color-gray\"style=\"line-height:20px;position:relative;top:2px;\">168万</td>\n"//"</tr>\n"//"</tbody></table>\n"//"</div>";Stringcontent="私有地址(Privateaddress)属于非注册地址,专门为组织机构内部使用。\n""以下列出留用的内部私有地址\n""A类10.0.0.0--10.255.255.255\n""B类172.16.0.0--172.31.255.255\n""C类192.168.0.0--192.168.255.255";//提取文章中所有的英文单词//提取文章中所有的数字//提取文章中所有的英文单词和数字//提取百度热榜标题//(1).传统方法.使用遍历方式,代码量大,效率不高//(2).正则表达式技术//1.先创建一个Pattern对象,模式对象,可以理解成就是一个正则表达式对象//Patternpattern=Pattern.compile("[a-zA-Z]");//Patternpattern=Pattern.compile("[0-9]");//Patternpattern=Pattern.compile("([0-9])|([a-zA-Z])");//Patternpattern=Pattern.compile("<atarget=\"_blank\"title=\"(\\S*)\"");Patternpattern=Pattern.compile("\\d\\.\\d\\.\\d\\.\\d");//2.创建一个匹配器对象//理解:就是matcher匹配器按照pattern(模式/样式),到content文本中去匹配//找到就返回true,否则就返回falseintno=0;Matchermatcher=pattern.matcher(content);//3.可以开始循环匹配while(matcher.find()){//匹配内容,文本,放到m.group(0)System.out.println("找到:"(no)""matcher.group(0));}}}

1.2再提出几个问题?


1.3解决之道-正则表达式

2.正则表达式基本介绍

全称:regularexpression

2.1介绍


3.正则表达式底层实现(重要)

3.1实例分析

为让大家对正则表达式底层实现有一个直观的映象,给大家举个实例,给你一段字符串(文本),请找出所有四个数字连在一起的子串,比如:

应该找到1998199934439889
分析底层实现:
RegTheory.java

/***分析java的正则表达式的底层实现(重要.)*/publicclassRegTheory{publicstaticvoidmain(String[]args){Stringcontent="1998年12月8日,第二代Java平台的企业版J2EE发布。1999年6月,Sun公司发布了""第二代Java平台(简称为Java2)的3个版本:J2ME(Java2MicroEdition,Java2平台的微型""版),应用于移动、无线及有限资源的环境;J2SE(Java2StandardEdition,Java2平台的""标准版),应用于桌面环境;J2EE(Java2EnterpriseEdition,Java2平台的企业版),应""用3443于基于Java的应用服务器。Java2平台的发布,是Java发展过程中最重要的一个""里程碑,标志着Java的应用开始普及9889";//目标:匹配所有四个数字//说明//1.\\d表示一个任意的数字StringregStr="(\\d\\d)(\\d\\d)";//2.创建模式对象[即正则表达式对象]Patternpattern=Pattern.compile(regStr);//3.创建匹配器//说明:创建匹配器matcher,按照正则表达式的规则去匹配content字符串Matchermatcher=pattern.matcher(content);//4.开始匹配/****matcher.find()完成的任务(考虑分组)*什么是分组,比如(\d\d)(\d\d),正则表达式中有()表示分组,第1个()表示第1组,第2个()表示第2组...*1.根据指定的规则,定位满足规则的子字符串(比如(19)(98))*2.找到后,将子字符串的开始的索引记录到matcher对象的属性int[]groups;*2.1groups[0]=0,把该子字符串的结束的索引1的值记录到groups[1]=4*2.2记录1组()匹配到的字符串groups[2]=0groups[3]=2*2.3记录2组()匹配到的字符串groups[4]=2groups[5]=4*2.4.如果有更多的分组.....*3.同时记录oldLast的值为子字符串的结束的索引1的值即35,即下次执行find时,就从35开始匹配**matcher.group(0)分析**源码:*publicStringgroup(intgroup){*if(first<0)*thrownewIllegalStateException("Nomatchfound");*if(group<0||group>groupCount())*thrownewIndexOutOfBoundsException("Nogroup"group);*if((groups[group*2]==-1)||(groups[group*21]==-1))*returnnull;*returngetSubSequence(groups[group*2],groups[group*21]).toString();*}*1.根据groups[0]=31和groups[1]=35的记录的位置,从content开始截取子字符串返回*就是[31,35)包含31但是不包含索引为35的位置**如果再次指向find方法.仍然安上面分析来执行*/while(matcher.find()){//小结//1.如果正则表达式有()即分组//2.取出匹配的字符串规则如下//3.group(0)表示匹配到的子字符串//4.group(1)表示匹配到的子字符串的第一组字串//5.group(2)表示匹配到的子字符串的第2组字串//6....但是分组的数不能越界.System.out.println("找到:"matcher.group(0));System.out.println("第1组()匹配到的值="matcher.group(1));System.out.println("第2组()匹配到的值="matcher.group(2));}}}

4.正则表达式语法

4.1基本介绍

4.2元字符(Metacharacter)-转义号\\


/***演示转义字符的使用*/publicclassRegExp02{publicstaticvoidmain(String[]args){Stringcontent="abc$(a.bc(123()";//匹配(=>\\(//匹配.=>\\.//匹配/=>\\///匹配\=>\\\\StringregStr="\\.";Patternpattern=Pattern.compile(regStr);Matchermatcher=pattern.matcher(content);while(matcher.find()){System.out.println("找到"matcher.group(0));}}}

4.3元字符-字符匹配符


/***演示字符匹配符的使用*/publicclassRegExp03{publicstaticvoidmain(String[]args){Stringcontent="a11c8abc_ABCy@";//StringregStr="[a-z]";//匹配a-z之间任意一个字符//StringregStr="[A-Z]";//匹配A-Z之间任意一个字符//StringregStr="abc";//匹配abc字符串[默认区分大小写]//StringregStr="(?i)abc";//匹配abc字符串[不区分大小写]//StringregStr="[0-9]";//匹配0-9之间任意一个字符//StringregStr="[^a-z]";//匹配不在a-z之间任意一个字符//StringregStr="[^0-9]";//匹配不在0-9之间任意一个字符//StringregStr="[abcd]";//匹配在abcd中任意一个字符//StringregStr="\\D";//匹配不在0-9的任意一个字符//StringregStr="\\w";//匹配大小写英文字母,数字,下划线//StringregStr="\\W";//匹配等价于[^a-zA-Z0-9_]//\\s匹配任何空白字符(空格,制表符等)//StringregStr="\\s";//\\S匹配任何非空白字符,和\\s刚好相反//StringregStr="\\S";//.匹配出\n之外的所有字符,如果要匹配.本身则需要使用\\.StringregStr=".";//说明//1.当创建Pattern对象时,指定Pattern.CASE_INSENSITIVE,表示匹配是不区分字母大小写.Patternpattern=Pattern.compile(regStr/*,Pattern.CASE_INSENSITIVE*/);Matchermatcher=pattern.matcher(content);while(matcher.find()){System.out.println("找到"matcher.group(0));}}}

4.4元字符-选择匹配符

/***选择匹配符*/publicclassRegExp04{publicstaticvoidmain(String[]args){Stringcontent="hanshunping韩寒冷";StringregStr="han|韩|寒";Patternpattern=Pattern.compile(regStr/*,Pattern.CASE_INSENSITIVE*/);Matchermatcher=pattern.matcher(content);while(matcher.find()){System.out.println("找到"matcher.group(0));}}}

4.5元字符-限定符

用于指定其前面的字符和组合项连续出现多少次

/***@author韩顺平*@version1.0*演示限定符的使用*/publicclassRegExp05{publicstaticvoidmain(String[]args){Stringcontent="a211111aaaaaahello";//a{3},1{4},\\d{2}//StringregStr="a{3}";//表示匹配aaa//StringregStr="1{4}";//表示匹配1111//StringregStr="\\d{2}";//表示匹配两位的任意数字字符//a{3,4},1{4,5},\\d{2,5}//细节:java匹配默认贪婪匹配,即尽可能匹配多的//StringregStr="a{3,4}";//表示匹配aaa或者aaaa//StringregStr="1{4,5}";//表示匹配1111或者11111//StringregStr="\\d{2,5}";//匹配2位数或者3,4,5位数//1//StringregStr="1";//匹配一个1或者多个1//StringregStr="\\d";//匹配一个数字或者多个数字//1*//StringregStr="1*";//匹配0个1或者多个1//演示?的使用,遵守贪婪匹配StringregStr="a1?";//匹配a或者a1Patternpattern=Pattern.compile(regStr/*,Pattern.CASE_INSENSITIVE*/);Matchermatcher=pattern.matcher(content);while(matcher.find()){System.out.println("找到"matcher.group(0));}}}

4.6元字符-定位符

定位符,规定要匹配的字符串出现的位置,比如在字符串的开始还是在结束的位置,这个也是相当有用的,必须掌握!

/***演示定位符的使用*/publicclassRegExp06{publicstaticvoidmain(String[]args){Stringcontent="hanshunpingsphannnhan";//Stringcontent="123-abc";//以至少1个数字开头,后接任意个小写字母的字符串//StringregStr="^[0-9][a-z]*";//以至少1个数字开头,必须以至少一个小写字母结束//StringregStr="^[0-9]\\-[a-z]$";//表示匹配边界的han[这里的边界是指:被匹配的字符串最后,//也可以是空格的子字符串的后面]//StringregStr="han\\b";//和\\b的含义刚刚相反StringregStr="han\\B";Patternpattern=Pattern.compile(regStr);Matchermatcher=pattern.matcher(content);while(matcher.find()){System.out.println("找到="matcher.group(0));}}}

4.7分组

4.7.1捕获分组

/***分组:*/publicclassRegExp07{publicstaticvoidmain(String[]args){Stringcontent="hanshunpings7789nn1189han";//下面就是非命名分组//说明//1.matcher.group(0)得到匹配到的字符串//2.matcher.group(1)得到匹配到的字符串的第1个分组内容//3.matcher.group(2)得到匹配到的字符串的第2个分组内容//StringregStr="(\\d\\d)(\\d\\d)";//匹配4个数字的字符串//命名分组:即可以给分组取名StringregStr="(?<g1>\\d\\d)(?<g2>\\d\\d)";//匹配4个数字的字符串Patternpattern=Pattern.compile(regStr);Matchermatcher=pattern.matcher(content);while(matcher.find()){System.out.println("找到="matcher.group(0));System.out.println("第1个分组内容="matcher.group(1));System.out.println("第1个分组内容[通过组名]="matcher.group("g1"));System.out.println("第2个分组内容="matcher.group(2));System.out.println("第2个分组内容[通过组名]="matcher.group("g2"));}}}

4.7.2非捕获分组

/***演示非捕获分组,语法比较奇怪*/publicclassRegExp08{publicstaticvoidmain(String[]args){Stringcontent="hello达内教育jack达内老师达内同学hello达内学生";//找到达内教育、达内老师、达内同学子字符串//StringregStr="达内教育|达内老师|达内同学";//上面的写法可以等价非捕获分组,注意:不能matcher.group(1)//StringregStr="达内(?:教育|老师|同学)";//找到达内这个关键字,但是要求只是查找达内教育和达内老师中包含有的达内//下面也是非捕获分组,不能使用matcher.group(1)//StringregStr="达内(?=教育|老师)";//找到达内这个关键字,但是要求只是查找不是(达内教育和达内老师)中包含有的达内//下面也是非捕获分组,不能使用matcher.group(1)StringregStr="达内(?!教育|老师)";Patternpattern=Pattern.compile(regStr);Matchermatcher=pattern.matcher(content);while(matcher.find()){System.out.println("找到:"matcher.group(0));}}}

4.8非贪婪匹配

/***非贪婪匹配*/publicclassRegExp09{publicstaticvoidmain(String[]args){Stringcontent="hello111111ok";//StringregStr="\\d";//默认是贪婪匹配//StringregStr="\\d?";//非贪婪匹配StringregStr="\\d?";//非贪婪匹配Patternpattern=Pattern.compile(regStr);Matchermatcher=pattern.matcher(content);while(matcher.find()){System.out.println("找到:"matcher.group(0));}}}

4.9了解更多请查看相关文档

5.应用实例

5.1对字符串进行如下验证

/***正则表达式的应用实例*/publicclassRegExp10{publicstaticvoidmain(String[]args){Stringcontent="13588889999";//汉字//StringregStr="^[\u0391-\uffe5]$";//邮政编码//要求:1.是1-9开头的一个六位数.比如:123890//2.//3.//StringregStr="^[1-9]\\d{5}$";//QQ号码//要求:是1-9开头的一个(5位数-10位数)比如:12389,1345687,187698765//StringregStr="^[1-9]\\d{4,9}$";//手机号码//要求:必须以13,14,15,18开头的11位数,比如13588889999StringregStr="^1[3|4|5|8]\\d{9}$";Patternpattern=Pattern.compile(regStr);Matchermatcher=pattern.matcher(content);if(matcher.find()){System.out.println("满足格式");}else{System.out.println("不满足格式");}}}

总结:
以什么位数结尾的可以添加$定位符修饰

/***演示正则表达式的使用*/publicclassRegExp11{publicstaticvoidmain(String[]args){//Stringcontent="https://www.bilibili.com/video/BV1fh411y7R8?from=search&seid=1831060912083761326";Stringcontent="http://edu.3dsmax.tech/yg/bilibili/my6652/pc/qg/05-51/index.html#201211-1?track_id=jMc0jn-hm-yHrNfVad37YdhOUh41XYmjlss9zocM26gspY5ArwWuxb4wYWpmh2Q7GzR7doU0wLkViEhUlO1qNtukyAgake2jG1bTd23lR57XzV83E9bAXWkStcAh4j9Dz7a87ThGlqgdCZ2zpQy33a0SVNMfmJLSNnDzJ71TU68Rc-3PKE7VA3kYzjk4RrKU";/***思路*1.先确定url的开始部分https://|http://*2.然后通过([\w-]\.)[\w-]匹配www.bilibili.com*3./video/BV1fh411y7R8?from=sear匹配(\/[\w-?=&/%.#]*)?*/StringregStr="^((http|https)://)?([\\w-]\\.)[\\w-](\\/[\\w-?=&/%.#]*)?$";//注意:[.?*]表示匹配就是.本身Patternpattern=Pattern.compile(regStr);Matchermatcher=pattern.matcher(content);if(matcher.find()){System.out.println("满足格式");}else{System.out.println("不满足格式");}//这里如果使用Pattern的matches整体匹配比较简洁System.out.println(Pattern.matches(regStr,content));}}

总结:
做一些复杂的正则题目时,可以使用拆分的思想,将表达式拆成各个部分进行处理

6.正则表达式三个常用类

/***演示Pattern方法,用于整体匹配,在验证输入的字符串是否满足条件使用*/publicclassPatternMethod{publicstaticvoidmain(String[]args){Stringcontent="helloabchello,韩顺平教育";//StringregStr="hello";StringregStr="hello.*";booleanmatches=Pattern.matches(regStr,content);System.out.println("整体匹配="matches);}}/***Matcher类的常用方法*/publicclassMatcherMethod{publicstaticvoidmain(String[]args){Stringcontent="helloedujackhspedutomhellosmithhellohspeduhspedu";StringregStr="hello";Patternpattern=Pattern.compile(regStr);Matchermatcher=pattern.matcher(content);while(matcher.find()){System.out.println("=================");System.out.println(matcher.start());System.out.println(matcher.end());System.out.println("找到:"content.substring(matcher.start(),matcher.end()));}//整体匹配方法,常用于,去校验某个字符串是否满足某个规则System.out.println("整体匹配="matcher.matches());//完成如果content有hspedu替换成韩顺平教育regStr="hspedu";pattern=Pattern.compile(regStr);matcher=pattern.matcher(content);//注意:返回的字符串才是替换后的字符串原来的content不变化StringnewContent=matcher.replaceAll("韩顺平教育");System.out.println("newContent="newContent);System.out.println("content="content);}}

7.分组、捕获、反向引用

7.1提出需求

7.2介绍

7.3看几个小案例

/***反向引用*/publicclassRegExp12{publicstaticvoidmain(String[]args){Stringcontent="h1234el9876lo33333j12324-333999111a1551ck14tom11jack22yyy12345xxx";//要匹配两个连续的相同数字:(\\d)\\1//StringregStr="(\\d)\\1";//要匹配五个连续的相同数字:(\\d)\\1{4}//StringregStr="(\\d)\\1{4}";//要匹配个位与千位相同,十位与百位相同的数5225,1551(\\d)(\\d)\\2\\1//StringregStr="(\\d)(\\d)\\2\\1";/***请在字符串中检索商品编号,形式如:12321-333999111这样的号码,*要求满足前面是一个五位数,然后一个-号,然后是一个九位数,连续的每三位要相同*/StringregStr="\\d{5}-(\\d)\\1{2}(\\d)\\2{2}(\\d)\\3{2}";Patternpattern=Pattern.compile(regStr);Matchermatcher=pattern.matcher(content);while(matcher.find()){System.out.println("找到"matcher.group(0));}}}

7.4经典的结巴程序

把类似:“我…我要…学学学学…编程java!”;
通过正则表达式修改成“我要学编程java”

publicclassRegExp13{publicstaticvoidmain(String[]args){Stringcontent="我....我要....学学学学....编程java!";//1.去掉所有的.Patternpattern=Pattern.compile("\\.");Matchermatcher=pattern.matcher(content);content=matcher.replaceAll("");//System.out.println("content="content);//2.去掉重复的字我我要学学学学编程java!//思路//(1)使用(.)\\1//(2)使用反向引用$1来替换匹配到的内容//注意:因为正则表达式变化,所以需要重置matcher//pattern=Pattern.compile("(.)\\1");//分组的捕获内容记录到$1//matcher=pattern.matcher(content);//while(matcher.find()){//System.out.println("找到="matcher.group(0));//}//////使用反向引用$1来替换匹配到的内容//content=matcher.replaceAll("$1");//System.out.println("content="content);//3.使用一条语句去掉重复的字我我要学学学学编程java!content=Pattern.compile("(.)\\1").matcher(content).replaceAll("$1");System.out.println("content="content);}}

8.String类中使用正则表达式

8.1替换功能

String类publicStringreplaceAll(Stringregex,Stringreplacement)

8.2判断功能

String类publicbooleanmatches(Stringregex){}//使用Pattern和Matcher类

8.3分割功能

String类publicString[]split(Stringregex)

8.4应用实例

publicclassStringReg{publicstaticvoidmain(String[]args){Stringcontent="2000年5月,JDK1.3、JDK1.4和J2SE1.3相继发布,几周后其""获得了Apple公司MacOSX的工业标准的支持。2001年9月24日,J2EE1.3发""布。""2002年2月26日,J2SE1.4发布。自此Java的计算能力有了大幅提升";//使用正则表达式方式,将JDK1.3和JDK1.4替换成JDKcontent=content.replaceAll("JDK1\\.3|JDK1\\.4","JDK");System.out.println(content);//要求验证一个手机号,要求必须是以138139开头的content="13888889999";if(content.matches("1(38|39)\\d{8}")){System.out.println("验证成功");}else{System.out.println("验证失败");}//要求按照#或者-或者~或者数字来分割System.out.println("===================");content="hello#abc-jack12smith~北京";String[]split=content.split("#|-|~|\\d");for(Strings:split){System.out.println(s);}}}

9.本章作业



Homework01.java

publicclassHomework01{publicstaticvoidmain(String[]args){//规定电子邮件规则为//只能有一个@//@前面是用户名,可以是a-zA-Z0-9_-字符//@后面是域名,并且域名只能是英文字母,比如sohu.com或者tsinghua.org.cn//写出对应的正则表达式,验证输入的字符串是否为满足规则Stringcontent="hsp@tsinghua.org.cnkkk";StringregStr="^[\\w-]@([a-zA-Z]\\.)[a-zA-Z]$";//老师说明//1.String的matches是整体匹配//2.看看这个matches底层/***String的matches*publicbooleanmatches(Stringregex){*returnPattern.matches(regex,this);*}**Pattern*publicstaticbooleanmatches(Stringregex,CharSequenceinput){*Patternp=Pattern.compile(regex);*Matcherm=p.matcher(input);*returnm.matches();*}**Mather类match*Attemptstomatchtheentireregionagainstthepattern*publicbooleanmatches(){*returnmatch(from,ENDANCHOR);*}*/if(content.matches(regStr)){System.out.println("匹配成功");}else{System.out.println("匹配失败");}}}

Homework02.java

publicclassHomework02{publicstaticvoidmain(String[]args){//要求验证是不是整数或者小数//提示:这个题要考虑正数和负数//比如:123-34534.89-87.9-0.010.45等/***老师的思路*1.先写出简单的正则表达式*2.在逐步的完善[根据各种情况来完善]*/Stringcontent="-0.89";//StringregStr="^[-]?([1-9]\\d*|0)(\\.\\d)?$";if(content.matches(regStr)){System.out.println("匹配成功是整数或者小数");}else{System.out.println("匹配失败");}}}

Homework03.java

publicclassHomework03{publicstaticvoidmain(String[]args){Stringcontent="http://www.sohu.com:8080/abc/xxx/yyy/inde@#$%x.htm";//因为正则表达式是根据要求来编写的,所以,如果需求需要的话,可以改进.StringregStr="^([a-zA-Z])://([a-zA-Z.]):(\\d)[\\w-/]*/([\\w.@#$%])$";Patternpattern=Pattern.compile(regStr);Matchermatcher=pattern.matcher(content);if(matcher.matches()){//整体匹配,如果匹配成功,可以通过group(x),获取对应分组的内容System.out.println("整体匹配="matcher.group(0));System.out.println("协议:"matcher.group(1));System.out.println("域名:"matcher.group(2));System.out.println("端口:"matcher.group(3));System.out.println("文件:"matcher.group(4));}else{System.out.println("没有匹配成功");}}}

发表评论

  • 评论列表
还没有人评论,快来抢沙发吧~