国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java正則提取中括號中的內容操作示例

Java正則提取中括號中的內容操作示例

2021-05-06 11:43tianpy5 Java教程

這篇文章主要介紹了Java正則提取中括號中的內容操作,涉及Java針對字符串的正則匹配、轉換、遍歷等相關操作技巧,需要的朋友可以參考下

本文實例講述了Java正則提取中括號中的內容操作。分享給大家供大家參考,具體如下:

曾經在工作中遇到一個問題,就是需要提取字符串中每一個中括號里的內容,在網上搜了一下,發現用正則表達式可以提取中括號中的內容,具體實現如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ExtractMessage {
  public static void main(String[] args) {
    String msg = "PerformanceManager[第1個中括號]Product[第2個中括號]<[第3個中括號]79~";
    List<String> list = extractMessageByRegular(msg);
    for (int i = 0; i < list.size(); i++) {
      System.out.println(i+"-->"+list.get(i));
    }
  }
  /**
   * 使用正則表達式提取中括號中的內容
   * @param msg
   * @return
   */
  public static List<String> extractMessageByRegular(String msg){
    List<String> list=new ArrayList<String>();
    Pattern p = Pattern.compile("(\\[[^\\]]*\\])");
    Matcher m = p.matcher(msg);
    while(m.find()){
      list.add(m.group().substring(1, m.group().length()-1));
    }
    return list;
  }
}

輸出結果如下:

0-->第1個中括號
1-->第2個中括號
2-->第3個中括號

這樣很快就完成了代碼的工作,但是后來發現如果中括號中還包含中括號,正則表達式就失去作用了,我不得不自己想辦法解決,經過研究終于招到了解決方法,具體實現如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package com.perry.test;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ExtractMessage {
  public static void main(String[] args) {
    String msg = "PerformanceManager[第1個中括號]Product[第2個中括號[中括號中包含中括號]]<[第3個中括號]79~";
    List<String> list = extractMessage(msg);
    for (int i = 0; i < list.size(); i++) {
      System.out.println(i+"-->"+list.get(i));
    }
  }
  /**
   * 提取中括號中內容,忽略中括號中的中括號
   * @param msg
   * @return
   */
  public static List<String> extractMessage(String msg) {
    List<String> list = new ArrayList<String>();
    int start = 0;
    int startFlag = 0;
    int endFlag = 0;
    for (int i = 0; i < msg.length(); i++) {
      if (msg.charAt(i) == '[') {
        startFlag++;
        if (startFlag == endFlag + 1) {
          start = i;
        }
      } else if (msg.charAt(i) == ']') {
        endFlag++;
        if (endFlag == startFlag) {
          list.add(msg.substring(start + 1, i));
        }
      }
    }
    return list;
  }
}

輸出結果如下:

0-->第1個中括號
1-->第2個中括號[中括號中包含中括號]
2-->第3個中括號

主要思路就是遍歷字符串,在中括號的開始和結束位置做標記計數,如果是中括號開始位置對應的結束位置,那么開始位置和結束位置的計數是一致的,這樣截取的就是一個完整的中括號的內容。

希望本文所述對大家java程序設計有所幫助。

原文鏈接:https://blog.csdn.net/tianpy5/article/details/52205776

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 欧美成人一级 | 成人免费福利 | 欧美一级片 | 国产日产精品一区二区三区四区 | 久久成人一区二区 | 国产精品一区二区三区在线 | 国产精品美女久久久久久久久久久 | t66y最新地址一地址二69 | 久久综合久久久 | 久久久99精品免费观看 | 欧美狠狠操 | 91精品一久久香蕉国产线看观看新通道出现 | 日韩成人综合 | 一区二区三区视频 | 一 级 黄 色 片免费网站 | 国产亚洲精品精品国产亚洲综合 | 99久久99久久久精品色圆 | 欧美日韩一级视频 | 亚洲欧美一区二区三区四区 | 男人天堂网av | 久久中文免费 | 欧美一级在线 | 久久一区二区三区四区 | 麻豆激情| 在线 欧美 日韩 | 国产精品美女久久久久久久久久久 | 日本视频在线 | 国产一区二区精品在线观看 | 黄色片视频在线播放 | 黄色网页在线观看 | 久久久久久久国产精品免费播放 | 日本久久综合 | 亚洲成人精品久久久 | 日韩色综合 | 日韩精品视频一区二区三区 | 日韩中文字幕一区 | 成人免费视频网 | 亚洲欧洲av在线 | 99久久婷婷国产综合精品草原 | 免费成人一级片 | 日韩在线观看三区 |