Java正则表达式如何精准提取中括号内外文本?

Java正则表达式如何精准提取中括号内外文本?

Java字符串处理:巧妙提取中括号内外文本

在Java开发中,经常需要从字符串中提取特定部分。本文提供一种高效的方法,从包含中括号的字符串中,分别提取中括号之前和中括号内部的文本,即使中括号前文本长度不固定也能轻松应对。

例如,对于字符串 “test[10000]”,我们需要分别提取 “test” 和 “10000”。 简单的字符串截取方法难以处理中括号前文本长度不确定的情况。这时,正则表达式是理想的解决方案。

以下Java代码片段利用正则表达式 (.+)[(.+)] 实现了这一目标:

立即学习Java免费学习笔记(深入)”;

import java.util.regex.*;  public class ExtractBracketText {      public static void main(String[] args) {         Pattern pattern = Pattern.compile("(.+)[(.+)]", Pattern.DOTALL);          String[] testStrings = {             "aaaaaaa[bbbbbbb]",             "测试测试[文本文本]",             "2321]][2312[231231]" // 测试用例,包含非完全匹配的情况         };          for (String testString : testStrings) {             Matcher matcher = pattern.matcher(testString);             if (matcher.matches()) {                 System.out.println(String.format("原始字符串: %s, 中括号前: %s, 中括号内: %s", testString, matcher.group(1), matcher.group(2)));             } else {                 System.out.println(String.format("原始字符串: %s, 不匹配", testString));             }         }     } }

代码中,(.+) 匹配一个或多个任意字符(中括号前的部分),[ 匹配左中括号(需要转义),(.+) 匹配中括号内的任意字符,] 匹配右中括号(需要转义)。Pattern.DOTALL 选项确保 . 可以匹配换行符。matches() 方法尝试将整个字符串与正则表达式匹配。匹配成功后,matcher.group(1) 获取第一个捕获组(中括号前的文本),matcher.group(2) 获取第二个捕获组(中括号内的文本)。 多个测试用例确保了代码的鲁棒性。 该方法能够灵活地处理各种情况,完美解决中括号前文本长度不固定问题。

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享