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對象,調用其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("[\\[][^\\[\\]]+[\\]]|[\\(][^\\(\\)]+[\\)]", "");
?? ?}總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
詳解使用Mybatis-plus + velocity模板生成自定義的代碼
這篇文章主要介紹了詳解使用Mybatis-plus + velocity模板生成自定義的代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-03-03
java優(yōu)先隊列PriorityQueue中Comparator的用法詳解
這篇文章主要介紹了java優(yōu)先隊列PriorityQueue中Comparator的用法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-02-02
vscode 配置java環(huán)境并調試運行的詳細過程
這篇文章主要介紹了vscode 配置java環(huán)境并調試運行的詳細過程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-05-05
jpa實體@ManyToOne @OneToMany無限遞歸方式
這篇文章主要介紹了jpa實體@ManyToOne @OneToMany無限遞歸方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10

