首页 > 解决方案 > Java正则表达式提取所有内容,但两个括号之间的内容

问题描述

我正在苦苦挣扎,并查找了许多资源。感谢您的时间和耐心。我想提取字符串中的所有内容,但两个括号之间的内容,包括括号本身。

Duck, Donald [CTO Enterprise] Mouse, Micky [HR Employee Engagement]

我只想拥有:

鸭子、唐老鸭、米奇

到目前为止,我一直在严重操纵

[A-Za-z, ][^\[(.*?)\]]

但无济于事。

谢谢你!!

标签: javaregex

解决方案


你可以试试:

\s*\[.*?[^\[]*\]

上述正则表达式的解释:

\s*- 匹配任何空白字符(等于[\r\n\t\f\v ])零次或多次。

[.*?[^\[]*\]- 从字面上匹配方括号并懒惰地匹配方括号内的所有内容。如果这也是您的要求,它甚至会替换嵌套的括号。

图形表示

你可以在这里找到正则表达式的演示

java中的实现:

public class Main
{
    public static void main(String[] args) {
        String str = "Duck, Donald [CTO Enterprise] Mouse, Micky [HR Employee Engagement]";
        System.out.println(str.replaceAll("\\s*\\[.*?[^\\[]*\\]", ""));
    }
}
// outputs: Duck, Donald Mouse, Micky

您可以在此处找到上述代码的示例运行。


推荐阅读