正規表現系列 | (xxで始まりxxで終わる抽出、分割、置換)

正規表現系列 | (xxで始まりxxで終わる抽出、分割、置換)


第 1章
リンク:正規表現シリーズ|(xx で始まり xx で終わるセグメンテーションを抽出)

序文

正規表現は文字列操作の論理式であり、機能: 特定のパターン (ルール) に従うテキストを取得および置換するためのもので、一部の文字列はいくつかの設定されたルールを通じて照合でき、これは強力な文字列照合ツールです。

1. データ処理は xx で始まり xx で終わりますか?

1. xx で始まり xx で終わるテキストを分割します。

  //示例
  String content = "这是一个标签<table>你好啊</table>标签结尾";
  private static void meth1(String content) {
    
    
      String[] tables = content.split("<table>.*?</table>");
      for (String table : tables) {
    
    
          System.out.println(table);
      }
  }

結果

输入:"这是一个标签<table>你好啊</table>标签结尾"
输出:
"这是一个标签"
"标签结尾"

2. xx で始まり xx で終わるコンテンツを抽出します

  //示例
  String content = "这是一个标签<table>你好啊</table>标签结尾";
  private static void meth2(String content) {
    
    
      Pattern pattern = Pattern.compile("<table>.*?</table>");
      Matcher matcher = pattern.matcher(content);
      while (matcher.find()) {
    
    
          System.out.println(matcher.);
          System.out.println(matcher.group().trim());
      }
  }

結果

输入:"这是一个标签<table>你好啊</table>标签结尾"
输出:"<table>你好啊</table>"

输入:"这是一个标签<table>你好啊1</table>标签结尾<table>你好啊2</table>结尾"
输出:
"<table>你好啊1</table>"
"<table>你好啊2</table>"

3. xx で始まり xx で終わる中間のコンテンツを抽出します。

matcher.group(1) は最初の括弧内のコンテンツを取得することを意味し、matcher.group() はコンテンツ全体を取得します

  //示例
    private static void meth3(String content) {
    
    
        Pattern pattern = Pattern.compile("<table>(.*?)</table>");
        Matcher matcher = pattern.matcher(content);
        while (matcher.find()) {
    
    
            String extractedText = matcher.group(1);
            System.out.println(extractedText);
        }
    }

結果

输入:"这是一个标签<table>你好啊1</table>标签结尾<table>你好啊2</table>结尾"
输出:
"你好啊1"
"你好啊2"

4. xx で始まり xx で終わる内容を置き換えます

    private static void meth4(String content) {
    
    
        Pattern pattern = Pattern.compile("<table>(.*?)</table>");
        Matcher matcher = pattern.matcher(content);
        String result = matcher.replaceAll("##");
        System.out.println(result);
    }

結果

输入:"这是一个标签<table>你好啊1</table>标签结尾<table>你好啊2</table>结尾"
输出:"这是一个标签##标签结尾##结尾"

5. xx で始まり、内容を xx に置き換え、シリアル番号をマークします

 private static void meth4(String content) {
    
    
        String patternString = "<table>(.*?)</table>";
        Pattern pattern = Pattern.compile(patternString);
        Matcher matcher = pattern.matcher(content);
        StringBuffer output = new StringBuffer();
        int count = 1;
        while (matcher.find()) {
    
    
            String replacement = "<替换后内容"+count+">";
            matcher.appendReplacement(output, replacement);
            count++;
        }
        matcher.appendTail(output);
        System.out.println("替换结果:" + output);
    }

結果

输入:"这是一个标签<table>你好啊1</table>标签结尾<table>你好啊2</table>结尾"
输出:"这是一个标签<替换后内容1>标签结尾<替换后内容2>结尾"

要約する

上記は正規表現を用いて、あるパターン(規則)に適合する文字列を検索・置換する場合であり、今後補足・改良していきます。

おすすめ

転載: blog.csdn.net/Oaklkm/article/details/131983095