Java使用正則獲取括號里面的內(nèi)容
更新時間:2023年05月26日 10:41:48 作者:RC_D
這篇文章主要介紹了Java使用正則獲取括號里面的內(nèi)容問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
Java正則獲取括號里面的內(nèi)容
其實嚴格來說是叫獲取組里面的內(nèi)容
先說核心,Matcher的方法group()可以取出括號里面的內(nèi)容,0是取出所有匹配字符串,即:不會按照組這個說法來匹配,之后就可以依次取出我們用括號括起來的內(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ù)爬取 ? ? //獲取當前頁面的核心列表 ? ? String s = page.getHtml().regex(JSConstants.kernelPattern).toString(); ? ? //獲取時間、標題和鏈接 ? ? String pattern = JSConstants.supplementPattern; ? ? // 創(chuàng)建 Pattern 對象 ? ? Pattern r = Pattern.compile(pattern); ? ? // 現(xiàn)在創(chuàng)建 matcher 對象 ? ? Matcher m = r.matcher(s); ? ? //找出匹配項中的全部鏈接 ? ? 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); ? ? ? ? } ? ? }
核心代碼其實不多。
- 獲取字符串str。
- 聲明一個Pattern對象,調(diào)用其compile靜態(tài)方法,獲取一個正常的統(tǒng)配符對象r。
- 通過r的matcher()方法,給它我們的字符串str,即r.matcher(str),獲得一個matcher對象m
- 最后,就可以通過matcher對象取出我們想要的數(shù)據(jù),取出組的話,要使用m的方法group(),0是取出所有匹配字符串,即不會按照組這個說法來匹配,之后就可以依次取出我們用括號括起來的內(nèi)容。
Java正則獲取括號內(nèi)的數(shù)據(jù)與排除括號內(nèi)的數(shù)據(jù)
正則獲取括號內(nèi)的數(shù)據(jù)
/** ?? ? * 獲取指定字符串中括號內(nèi)的內(nèi)容,返回字符串數(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é)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解使用Mybatis-plus + velocity模板生成自定義的代碼
這篇文章主要介紹了詳解使用Mybatis-plus + velocity模板生成自定義的代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-03-03java優(yōu)先隊列PriorityQueue中Comparator的用法詳解
這篇文章主要介紹了java優(yōu)先隊列PriorityQueue中Comparator的用法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-02-02vscode 配置java環(huán)境并調(diào)試運行的詳細過程
這篇文章主要介紹了vscode 配置java環(huán)境并調(diào)試運行的詳細過程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-05-05jpa實體@ManyToOne @OneToMany無限遞歸方式
這篇文章主要介紹了jpa實體@ManyToOne @OneToMany無限遞歸方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10mybatis攔截器實現(xiàn)通用權(quán)限字段添加的方法
這篇文章主要給大家介紹了關(guān)于mybatis攔截器實現(xiàn)通用權(quán)限字段添加的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用mybatis具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧2019-09-09