Java使用正則獲取括號里面的內(nèi)容
Java正則獲取括號里面的內(nèi)容
其實(shí)嚴(yán)格來說是叫獲取組里面的內(nèi)容
先說核心,Matcher的方法group()可以取出括號里面的內(nèi)容,0是取出所有匹配字符串,即:不會按照組這個(gè)說法來匹配,之后就可以依次取出我們用括號括起來的內(nèi)容。
例子:
? ? // 創(chuàng)建 Pattern 對象 ?? ?Pattern r = Pattern.compile("xx[\s,\S]+?()ss") ? ? // 現(xiàn)在創(chuàng)建 matcher 對象 ? ? Matcher m = r.matcher("你的字符串"); ?? ?//獲取括號里面的內(nèi)容 ?? ?m.group(1);
Java對字符串的正則
? ? //JS數(shù)據(jù)爬取 ? ? //獲取當(dāng)前頁面的核心列表 ? ? String s = page.getHtml().regex(JSConstants.kernelPattern).toString(); ? ? //獲取時(shí)間、標(biāo)題和鏈接 ? ? String pattern = JSConstants.supplementPattern; ? ? // 創(chuàng)建 Pattern 對象 ? ? Pattern r = Pattern.compile(pattern); ? ? // 現(xiàn)在創(chuàng)建 matcher 對象 ? ? Matcher m = r.matcher(s); ? ? //找出匹配項(xiàng)中的全部鏈接 ? ? extracted(m); ? ? //提出數(shù)據(jù)中的所有鏈接 ? ? private void extracted(Matcher m) { ? ? ? ? while (m.find()) { ? ? ? ? ? ? IndexPage indexPage = new IndexPage(); ? ? ? ? ? ? Date date = new Date(); ? ? ? ? ? ? String link = m.group(1); ? ? ? ? ? ? String title = m.group(2); ? ? ? ? ? ? String time = m.group(3); ? ? ? ? ? ? try { ? ? ? ? ? ? ? ? date = new SimpleDateFormat("yyyy-MM-dd").parse(time); ? ? ? ? ? ? ? ? System.out.println(date); ? ? ? ? ? ? } catch (ParseException e) { ? ? ? ? ? ? ? ? e.printStackTrace(); ? ? ? ? ? ? } ? ? ? ? ? ? indexPage.setTime(date); ? ? ? ? ? ? indexPage.setTitle(title); ? ? ? ? ? ? indexPage.setLink("你的網(wǎng)址" + link); ? ? ? ? ? ? indexPageList.add(indexPage); ? ? ? ? } ? ? }
核心代碼其實(shí)不多。
- 獲取字符串str。
- 聲明一個(gè)Pattern對象,調(diào)用其compile靜態(tài)方法,獲取一個(gè)正常的統(tǒng)配符對象r。
- 通過r的matcher()方法,給它我們的字符串str,即r.matcher(str),獲得一個(gè)matcher對象m
- 最后,就可以通過matcher對象取出我們想要的數(shù)據(jù),取出組的話,要使用m的方法group(),0是取出所有匹配字符串,即不會按照組這個(gè)說法來匹配,之后就可以依次取出我們用括號括起來的內(nèi)容。
Java正則獲取括號內(nèi)的數(shù)據(jù)與排除括號內(nèi)的數(shù)據(jù)
正則獲取括號內(nèi)的數(shù)據(jù)
/** ?? ? * 獲取指定字符串中括號內(nèi)的內(nèi)容,返回字符串?dāng)?shù)組 ?? ? * @param content ?? ? * @return ?? ? */ ?? ?public String[] getBracketContent(String content){ ?? ??? ?String [] arr = new String[0]; ?? ??? ?Pattern p = Pattern.compile("(?<=\\()[^\\)]+"); ?? ??? ?Matcher m = p.matcher(content); ?? ??? ?while(m.find()){ ?? ??? ??? ?arr = Arrays.copyOf(arr,arr.length+1); ?? ??? ??? ?arr[arr.length-1]=m.group(); ?? ??? ?} ?? ??? ?return arr; ?? ?}
排除括號及括號內(nèi)的數(shù)據(jù)
/** ?? ? * 排除括號及括號內(nèi)的數(shù)據(jù) ?? ? * @param content ?? ? * @return ?? ? */ ?? ?public String getWord(String content){ ?? ??? ?return content.replaceAll("[\\[][^\\[\\]]+[\\]]|[\\(][^\\(\\)]+[\\)]", ""); ?? ?}
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解使用Mybatis-plus + velocity模板生成自定義的代碼
這篇文章主要介紹了詳解使用Mybatis-plus + velocity模板生成自定義的代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03java優(yōu)先隊(duì)列PriorityQueue中Comparator的用法詳解
這篇文章主要介紹了java優(yōu)先隊(duì)列PriorityQueue中Comparator的用法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02vscode 配置java環(huán)境并調(diào)試運(yùn)行的詳細(xì)過程
這篇文章主要介紹了vscode 配置java環(huán)境并調(diào)試運(yùn)行的詳細(xì)過程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-05-05jpa實(shí)體@ManyToOne @OneToMany無限遞歸方式
這篇文章主要介紹了jpa實(shí)體@ManyToOne @OneToMany無限遞歸方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10Java如何跳出當(dāng)前多重循環(huán)你知道嗎
這篇文章主要為大家介紹了Java跳出當(dāng)前多重循環(huán),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-01-01mybatis攔截器實(shí)現(xiàn)通用權(quán)限字段添加的方法
這篇文章主要給大家介紹了關(guān)于mybatis攔截器實(shí)現(xiàn)通用權(quán)限字段添加的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用mybatis具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09