你可以使用以下代码来实现这个功能:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {
    public static void main(String[] args) {
        String input = "This is a [sample] string {with} some [brackets]";
        Pattern pattern = Pattern.compile("\\[([^\\[\\]]+)\\]|\\{([^\\{\\}]+)\\}");
        Matcher matcher = pattern.matcher(input);
        
        while (matcher.find()) {
            if (matcher.group(1) != null) {
                System.out.println(matcher.group(1));
            } else if (matcher.group(2) != null) {
                System.out.println(matcher.group(2));
            }
        }
    }
}

输出结果为:

sample
with
brackets

在正则表达式中,我们使用了两个子表达式来匹配成对出现的方括号和花括号中的内容。首先,\\[([^\\[\\]]+)\\] 匹配方括号中的内容,其中 [^\\[\\]]+ 表示匹配不包含方括号的任意字符。然后,\\{([^\\{\\}]+)\\} 匹配花括号中的内容,其中 [^\\{\\}]+ 表示匹配不包含花括号的任意字符。

while 循环中,我们使用 matcher.find() 来找到所有匹配的子字符串。然后,我们使用 matcher.group(1)matcher.group(2) 来获取方括号和花括号中的内容。如果 matcher.group(1) 不为空,则表示匹配到了方括号中的内容;如果 matcher.group(2) 不为空,则表示匹配到了花括号中的内容

java 利用正则表达式提取成对出现的或者中间的内容不是成对的不提取

原文地址: http://www.cveoy.top/t/topic/ib13 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录